我计划实施以下集成流程:
IntegrationFlows.from(httpInboundGateway)
.transform(transformer-rest-api-1)
.transform(transformer-rest-api-2)
.handle(jdbc-outbound)
.handle(http-outbound-gateway-1)
.get();
我要满足的要求是:
使流动具有反应性有意义吗?如果是这样,该怎么办?如何在每个步骤登录? (窃听有帮助吗?),最后,能否请您提供java dsl中上述简单实现的具体示例?
答案 0 :(得分:0)
要使其平行,您需要考虑在端点之间使用ExecutorChannel
:
IntegrationFlows.from(httpInboundGateway)
.channel(c -> c.executor(myTaskExecutor()))
.transform(transformer-rest-api-1)
以此类推。
但是,由于您希望使用持久性选项,因此需要考虑将QueueChannel
与持久性MessageStore
:https://docs.spring.io/spring-integration/docs/current/reference/html/system-management-chapter.html#message-store一起使用。
然后,必须为每个端点提供 poller 选项,包括用于并行处理的tasExecutor
:
.channel(c -> c.queue(jdbcMessageStore(), "queue1Channel"))
.transform(transformer-rest-api-1,
e -> e.poller(p -> p.fixedDelay(100).taskExecutor(myTaskExecutor())))
要将端点设置为REST API,您只需使用Http.outboundGateway()
。
或对于反应式变量-WebFlux.outboundGateway()
中的.handle()
而不是transform()
。或者只是继续使用现有的.handle(http-outbound-gateway-1)
要使流程具有反应性,您需要使用.channel(c -> c.flux()))
,但是您对此问题将失去持久性。
要记录每个步骤,请在端点之间放置一个.log()
运算符。
您不清楚要分享一些示例的要求...