Spring 集成 DSL - 等待来自流中通道的输入
Spring Integration DSL - Wait for input from channel in the flow
我想知道在 spring 集成中是否可以在流程中包含一个 外部 渠道。所以我有 http 入站网关流,触发后它应该通过 udp 端口与其他进程通信。我最关心的是如何从这个流中的 udp 端口接收消息。
@Bean
public IntegrationFlow httpInboundGatewayFlow() {
return IntegrationFlows.from(Http.inboundGateway(httpInboundPath))
.transform(niUdpRequestTransformer())
/*sending a message to udp port*/
.publishSubscribeChannel(runnable -> runnable
.subscribe(flow -> flow
.handle(udpOutboundChannel())))
/*wait for input from udpResponse channel here (HOW TO?)*/
/*process udpInboundFlow message*/
.handle((payload, headers) -> successNetworkResponse())))
.transform(new ObjectToJsonTransformer())
.handle((payload, headers) -> payload)
.get();
}
@Bean
public IntegrationFlow udpInboundFlow() {
return IntegrationFlows.from(udpInboundChannel())
.transform(niUdpResponseTransformer())
.channel("udpResponse")
.get();
}
使用 udpInboundFlow 应该作为某种轮询器来实现,它会检查是否收到了正确的消息。
感谢您的帮助。
你说的是相关性。而且我以某种方式相信您希望得到对该 UDP 请求的某种回复。
所以,你需要的确实是这样的:
.channel("udpResponse")
.aggregate(...)
您应该为请求消息找出一些 correlationKey
并确保来自 UDP 的回复具有相同的密钥。应为 .releaseStrategy(group -> group.size() == 2)
.
配置聚合器
第一条消息将是请求消息,第二条消息确实是来自外部的结果 udpResponse
。
有关详细信息,请参阅 Reference Manual。
我想知道在 spring 集成中是否可以在流程中包含一个 外部 渠道。所以我有 http 入站网关流,触发后它应该通过 udp 端口与其他进程通信。我最关心的是如何从这个流中的 udp 端口接收消息。
@Bean
public IntegrationFlow httpInboundGatewayFlow() {
return IntegrationFlows.from(Http.inboundGateway(httpInboundPath))
.transform(niUdpRequestTransformer())
/*sending a message to udp port*/
.publishSubscribeChannel(runnable -> runnable
.subscribe(flow -> flow
.handle(udpOutboundChannel())))
/*wait for input from udpResponse channel here (HOW TO?)*/
/*process udpInboundFlow message*/
.handle((payload, headers) -> successNetworkResponse())))
.transform(new ObjectToJsonTransformer())
.handle((payload, headers) -> payload)
.get();
}
@Bean
public IntegrationFlow udpInboundFlow() {
return IntegrationFlows.from(udpInboundChannel())
.transform(niUdpResponseTransformer())
.channel("udpResponse")
.get();
}
使用 udpInboundFlow 应该作为某种轮询器来实现,它会检查是否收到了正确的消息。
感谢您的帮助。
你说的是相关性。而且我以某种方式相信您希望得到对该 UDP 请求的某种回复。
所以,你需要的确实是这样的:
.channel("udpResponse")
.aggregate(...)
您应该为请求消息找出一些 correlationKey
并确保来自 UDP 的回复具有相同的密钥。应为 .releaseStrategy(group -> group.size() == 2)
.
第一条消息将是请求消息,第二条消息确实是来自外部的结果 udpResponse
。
有关详细信息,请参阅 Reference Manual。