我对Spring集成比较陌生,但我的任务是实现一个需要的tcp网关:
根据我对弹簧集成的经验,消息流不是双向的。我只配置了侦听器,处理消息和输出到队列/主题的路由器。但是,在这种情况下,我需要接受消息并返回响应,同时还将某些消息转发到队列。建议?
到目前为止,这是我的集成xml。
<int:chain input-channel="tcpChannel">
<int:service-activator ref="tcpHandler" method="handleInput" />
</int:chain>
<int-ip:tcp-inbound-gateway
id="tcpGateway"
connection-factory="tcpServer"
request-channel="tcpChannel" />
如何将handleInput的输出转发到队列,还要从网关发回一些响应?
编辑:在与Gary谈话之后,这似乎是我们想要遵循的模式:
<int-ip:tcp-inbound-gateway id="tcpGateway"
connection-factory="tcpServer"
request-channel="tcpChannel"
reply-channel="tcpReplyChannel"/>
<int:publish-subscribe-channel id="tcpChannel" />
<int:chain input-channel="tcpChannel">
<!-- int:json-to-object-transformer type="com.heb.revo.events.RxPosCredit" /-->
<int:service-activator ref="tcpHandler" method="handleInputToQueue" />
<jms:outbound-channel-adapter destination-name="${queue.response}" />
</int:chain>
<int:service-activator id="tcpResponseHandler"
ref="tcpHandler" method="replyToSocket"
input-channel="tcpChannel"
output-channel="tcpReplyChannel" />
<int:publish-subscribe-channel id="tcpReplyChannel" />
答案 0 :(得分:0)
由于您的链没有output-channel
,框架会自动将handleInput
方法的返回值路由回网关。
如果您想捕获结果并将其发送到其他地方(以及回复),请创建<int:publish-subscribe-channel id="foo"/>
,将链的output-channel
设置为foo
,然后设置reply-channel
网关上的foo
,并将另一个端点订阅到foo
(作为input-channel
。