Spring Integration - 异步JMS

问题描述 投票:2回答:1

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

WS | ============ | JMS ~~~ async将来处理~~~

这个想法如下。传入的WS请求存储到JMS,一旦存储(正确发送),WS客户端就会响应OK。

我可以通过spring jmsTemplate实现这一点,就像这样

<chain>
  <service-activator> 
      ... calling jmsTemplate send ...
  </service-activator>
  <OK response>
</chain>

我不想使用jmsTemplate,但是如果我使用jms:outbound-channel-adapter,则不会生成任何回复消息并且它会被卡住。其他构造导致同步处理,意味着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"/>
spring-integration
1个回答
1
投票

<publish-subscribe-channel/>可以帮助您:

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

只有在jms出站适配器完成其工作后,Transformer才会应用该消息。

© www.soinside.com 2019 - 2024. All rights reserved.