Spring integration Spring集成-异步JMS

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> <

我在以下场景中苦苦挣扎:

WS |==================JMS~~~异步未来处理~~

想法如下。传入的WS-request存储到JMS,一旦存储(正确发送),WS-client将以OK响应

我可以通过SpringJMSTemplate实现这一点,比如

<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
频道方法。应为“…测试、监控或故障排除…”预留电线抽头。