Есть ли компонент для регистрации сообщений в Spring Integration с использованием Java DSL?
Я использую Spring Integration для разработки своих сценариев интеграции. Когда мне нужно написать несколько журналов, чтобы предоставить некоторую информацию, я пишу так:
@Bean
IntegrationFlow blacklist(BlacklistService service) {
return m -> m
.wireTap(f -> f.handle(t -> log.info("Adding email source address in blacklist...")))
.<MessageHandlingException, Blacklist>transform(p -> SourceBlacklist.of((Email) p.getFailedMessage().getHeaders().get(IntegrationConstants.MailSender.EMAIL)))
.wireTap(f -> f.handle(t -> log.info("Email source address added to blacklist.")))
.handle(service, "voidSave");
}
Я использую прослушивание телефонных разговоров с лямбда и дескриптор для регистрации моих сообщений. Есть ли лучший способ написать журнал с помощью Spring Integration с использованием Java DSL?
Благодарю.
1 ответ
Вы всегда можете просто включить регистрацию для org.springframework.integration
категория.
С другой стороны, Spring Integration предлагает войти в интеграционный поток как adapter
- <logging-channel-adapter>
, Итак, вам нужно просто отправить сообщение на канал этого адаптера. С точки зрения конфигурации это выглядит так:
<wire-tap channel="logging" pattern="*"/>
<logging-channel-adapter id="logging"/>
То же самое мы можем настроить с помощью Java DSL, но мы должны полагаться на целевой класс - LoggingHandler
:
@ServiceActivator(inputChannel = "logging")
@Bean
public loggingHandler() {
return new LoggingHandler();
}
...
.transform()
.wireTap("logging")
.handle();
Хотя я могу понять вашу точку зрения, и мы действительно могли бы добавить что-то удобное в Framework напрямую
Не стесняйтесь поднимать проблему GH ( https://github.com/spring-projects/spring-integration-java-dsl/issues) по этому вопросу, и мы продолжаем обсуждать эту функцию там.
Но сейчас ваше решение не выглядит плохо, если честно.
ОБНОВИТЬ
Запрос на Framework по этому вопросу: https://github.com/spring-projects/spring-integration-java-dsl/issues/70