我正在使用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");
}
我正在使用带有lambda和handle的窃听来记录我的消息。有没有更好的方法使用Java DSL使用Spring Integration编写日志?
感谢。
答案 0 :(得分:4)
您始终可以打开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();
虽然我可以看到你的观点,但我们真的可以直接为框架添加一些东西。
随意就此问题提出GH问题(https://github.com/spring-projects/spring-integration-java-dsl/issues),我们将继续讨论该问题。
但是现在你的解决方案看起来并不坏,说实话。
<强>更新强>
关于此事的框架请求:https://github.com/spring-projects/spring-integration-java-dsl/issues/70