【发布时间】:2018-04-18 00:01:10
【问题描述】:
我在以下情况下苦苦挣扎:
WS |============| JMS ~~~异步未来处理~~~
想法如下。传入的 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"/>
【问题讨论】:
-
为此目的使用丝锥不是好的做法;首选
publish-subscribe渠道方法。应为“……测试、监控或故障排除……”保留分接头(enterpriseintegrationpatterns.com/WireTap.html)。