Spring integration Spring集成-异步JMS
我在以下场景中苦苦挣扎: WS |==================JMS~~~异步未来处理~~ 想法如下。传入的WS-request存储到JMS,一旦存储(正确发送),WS-client将以OK响应 我可以通过SpringJMSTemplate实现这一点,比如Spring integration Spring集成-异步JMS,spring-integration,Spring Integration,我在以下场景中苦苦挣扎: WS |==================JMS~~~异步未来处理~~ 想法如下。传入的WS-request存储到JMS,一旦存储(正确发送),WS-client将以OK响应 我可以通过SpringJMSTemplate实现这一点,比如 <chain> <service-activator> ... calling jmsTemplate send ... </service-activator> <
<chain>
<service-activator>
... calling jmsTemplate send ...
</service-activator>
<OK response>
</chain>
... 正在调用jmsTemplate发送。。。
我不想使用jmsTemplate,但是如果我使用jms:outbound通道适配器,则不会生成任何回复消息,并且它会被卡住。其他构造导致同步处理,这意味着WS响应被延迟,直到JMS请求被完全处理
我相信有一个简单的解决办法,但我几个小时都没能找到。谢谢
编辑: 建议的解决方案有效,非常感谢!我的朋友给我推荐了另一个——用金属丝锥,看起来不错
<int:gateway service-interface="MyService" default-request-channel="in"/>
<channel id="in">
<interceptors>
<wire-tap channel="inJms"/>
</interceptors>
</channel>
<channel id="inJms"/>
<transformer expression="'OK'" input-channel="in" order="1"/>
<jms:outbound-channel-adapter channel="inJms" destination="requestQueue"/>
该
帮助您:
<publish-subscribe-channel id="storeMessageChannel"/>
<int-ws:inbound-gateway request-channel="storeMessageChannel"/>
<int-jms:outbound-channel-adapter channel="storeMessageChannel"/>
<int:transformer input-channel="storeMessageChannel" expression="'OK'"/>
在这种情况下,来自WS的消息将通过两个顺序订阅者发送到storeMessageChannel
:1。JMS—将消息放入队列;2.简单转换器-返回WS响应“OK”
Transformer将仅在jms出站适配器完成其工作后应用消息。非常感谢您的回答,我将对其进行深入测试。我只是想澄清一下。为什么转换器仅在适配器完成其工作后才应用消息?当JMS关闭时,如何实现发送NOK?谢谢!重新。您的上一个问题:删除此
。实际上(默认情况下),Spring使用了“超越”策略,您的频道不是publish-subscribe频道
,但仅direct
为此目的使用有线抽头并不被视为良好做法;首选publish-subscribe
频道方法。应为“…测试、监控或故障排除…”预留电线抽头。