[英]How to receive message from Spring Integration using Direct Channel
我创建了 DirectChannel 并将 object 发送到我的通道,并希望接收它以将其存储在 DB 中并将其发送到另一个服务总线队列中。 你能建议如何从频道接收 object 吗?
我的频道 -
@Bean("tempChannel")
public MessageChannel tempChannel() {
return new DirectChannel();
}
整合流程 -
@Bean
public IntegrationFlow tempMessageFlow() {
return IntegrationFlows.from("tempChannel").handle().get();
}
对于handle方法我需要传递MessageHandler,我如何声明它并传递到这里?
我正在使用下面的代码向频道发送消息,请告知是否可以-
tempChannel().send(messageObj);
DirectChannel
实现了一个SubscribableChannel
。 因此,要获取发送到此频道的消息,您需要subscribe(MessageHandler handler)
。 到目前为止,您对IntegrationFlow
定义的了解是可以的:添加您订阅的handle()
到tempChannel
。 只需处理消息并忘记您可以这样做:
.handle(m - > System.out.println("Processed message: " + m))
这是该MessageHandler
功能接口的 lambda。 对于其他用例,还有许多其他的handle()
变体。 例如 process-n-reply 是这样的:
.handle((p, h) - > {
System.out.println("Processed message: " + m);
return "My new payload";
})
如果您说您需要对同一条消息执行多个操作,请查看PublishSubscribeChannel
。 在 Java DSL 中,我们有一个publishSubscribeChannel(Consumer<PublishSubscribeSpec> publishSubscribeChannelConfigurer)
来将多个订阅者配置为子流。
要存储到数据库中,您可以使用JdbcMessageHandler
: https://docs.spring.io/spring-integration/docs/current/reference/html/jdbc.html#jdbc-outbound-channel-adapter
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.