繁体   English   中英

如何使用直接通道接收来自 Spring 集成的消息

[英]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)来将多个订阅者配置为子流。

要存储到数据库中,您可以使用JdbcMessageHandlerhttps://docs.spring.io/spring-integration/docs/current/reference/html/jdbc.html#jdbc-outbound-channel-adapter

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM