是否有使用 Java DSL 与 Spring 集成记录消息的组件?
Is there a component for logging messages with Spring Integration using Java DSL?
我正在使用 Spring 集成来开发我的集成方案。当我不得不写一些日志来提供一些信息时,我是这样写的:
@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 的窃听器来记录我的消息。有没有更好的方法来使用 Spring 集成使用 Java DSL 编写日志?
谢谢。
您始终可以只打开 org.springframework.integration
类别的日志记录。
从另一端 Spring 集成建议将集成流程作为 adapter
- <logging-channel-adapter>
登录。因此,您需要的只是将消息发送到该适配器的通道。从配置的角度来看,它看起来像:
<wire-tap channel="logging" pattern="*"/>
<logging-channel-adapter id="logging"/>
同样我们可以配置Java DSL,但是我们应该依赖目标class - 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
我正在使用 Spring 集成来开发我的集成方案。当我不得不写一些日志来提供一些信息时,我是这样写的:
@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 的窃听器来记录我的消息。有没有更好的方法来使用 Spring 集成使用 Java DSL 编写日志?
谢谢。
您始终可以只打开 org.springframework.integration
类别的日志记录。
从另一端 Spring 集成建议将集成流程作为 adapter
- <logging-channel-adapter>
登录。因此,您需要的只是将消息发送到该适配器的通道。从配置的角度来看,它看起来像:
<wire-tap channel="logging" pattern="*"/>
<logging-channel-adapter id="logging"/>
同样我们可以配置Java DSL,但是我们应该依赖目标class - 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