java - Sping .jms.listener 阻止另一个侦听器读取 JMS 消息
问题描述
我有两个应用程序 Apple 和 Pear,它们使用上述类来侦听 WildFly ( 10.1.0 ) 中配置的 JMS 队列。Spring 配置如下所示。
<bean id="appleMessageListenerContainer"
class="org.springframework.jms.listener.DefaultMessageListenerContainer"
depends-on="transactionManager">
<property name="connectionFactory" ref="connectionFactory" />
<property name="destination" ref="outQueue" />
<property name="destinationResolver" ref="jmsDestinationResolver" />
<property name="messageListener" ref="AppleMessageListener" />
<property name="messageSelector" value="ID='APPLE_ID'" />
<property name="transactionManager" ref="transactionManager" />
</bean>
<bean id="pearMessageListenerContainer"
class="org.springframework.jms.listener.DefaultMessageListenerContainer"
depends-on="transactionManager">
<property name="connectionFactory" ref="connectionFactory" />
<property name="destination" ref="outQueue" />
<property name="destinationResolver" ref="jmsDestinationResolver" />
<property name="messageListener" ref="PearMessageListener" />
<property name="messageSelector" value="ID='PEAR_ID'" />
<property name="transactionManager" ref="transactionManager" />
</bean>
预期过程如下:-
Apple 应用程序侦听器 ( AppleMessageListener ) 将从“outQueue”JMS 队列中读取消息。消息被更新,AppleMessageListener 将把消息写到“outQueue”,senderId 设置为“PEAR_ID”,这样 PearMessageListener 就会读取消息。AppleMessageListener 将在不同的“inQueue”或超时等待 Pear 应用程序的响应。
不幸的是,AppleMessageListener 将消息写入“outQueue”。AppleMessageListener 等待响应超时。只有在此超时之后,PearMessageListener 才会从“outQueue”中读取消息。就好像在 AppleMessageListener 等待响应时,PearMessageListener 被阻止读取消息。
请对为什么会这样的任何想法。谢谢您的帮助。
皮特
解决方案
推荐阅读
- php - 你如何在 laravel eloquent 中查询孩子和父母
- javascript - 如何在 Three.js 中创建无限地板(天际线)?
- bash - bash - source builtin 和 $HISTCMD 变量
- bash - `echo " $1 % 2" | bc -l` 在终端或 bash 脚本中不起作用,但 `bc` 在 `bc` 中接受这些参数
- rxjs - 如何使用 NGRX 在 Angular 5 中防止内容跳转/滚动
- angular - 如何在模板字符串中转义引号和大括号
- python - 如何在 Auth 对象的 __call__ 方法中签署 requests.Request 的正文?
- scala - Akka HTTP 设置响应标头
- android - 是否可以创建一个接受任何对象列表的动态 RecyclerView 适配器