Я занимаюсь разработкой API в Spring-интеграции с использованием DSL, вот как это работает
Адаптер опроса JDBC инициирует поток, получает некоторые данные из таблиц и отправляет их в DefaultRequestChannel, отсюда сообщение обрабатывается / передается по различным каналам.
Теперь я пытаюсь
1. отправьте электронное письмо, если в моем канале ошибок / обнаружены какие-либо ошибки (например, проблема с подключением, обнаружена плохая запись при опросе данных).
- После отправки письма в мою группу поддержки я хочу приостановить поток на 15 минут, а затем возобновить его автоматически.
Я попытался создать sendEmailChannel (получатель моего errorChannel), у меня это не работает. Так что просто создали метод трансформатора, как показано ниже
этот код работает нормально, но это хорошая практика?
@
@Transformer(inputChannel="errorChannel", outputChannel="suspendChannel")
public Message<?> errorChannelHandler(ErrorMessage errorMessage) throws RuntimeException, MessagingException, InterruptedException {
Exception exception = (Exception) errorMessage.getPayload();
String errorMsg = errorMessage.toString();
String subject = "API issue";
if (exception instanceof RuntimeException) {
errorMsg = "Run time exception";
subject = "Critical Alert";
}
if (exception instanceof JsonParseException) {
errorMsg = ....;
subject = .....;
}
MimeMessage message = sender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message);
helper.setFrom(senderEmail);
helper.setTo(receiverEmail);
helper.setText(errorMsg);
helper.setSubject(subject);
sender.send(message);
kafkaProducerSwitch.isKafkaDown());
return MessageBuilder.withPayload(exception.getMessage())
.build();
}
Я ищу какой-то лучший способ обработки вышеуказанной логики.
А также любые предложения приостановить мой поток на несколько минут.