【发布时间】:2014-04-19 22:34:15
【问题描述】:
我们正在使用 JMS 和 Spring Integration 从 Websphere MQ 读取消息。
<task:executor id="demoMessageReceiverChannelTE" pool-size="1-3" queue-capacity="5" keep-alive="1" rejection-policy="CALLER_RUNS"/>
<int:channel id="demoMessageReceiverChannel">
<int:dispatcher task-executor="demoMessageReceiverChannelTE"/>
<int:interceptors>
<int:ref bean="messageReceiverInterceptor" />
</int:interceptors>
</int:channel>
<jms:message-driven-channel-adapter
id="demoMesssageReceiverAdapter" channel="demoMessageReceiverChannel"
connection-factory="srcJmsConnectionFactory" destination="srcReceiverQueue"
error-channel="errorChannel" message-converter="demoIncomingMessageConverter"
transaction-manager="srcJmsTransactionManager" send-timeout="65000"
header-mapper="demoJmsHeaders" />
还有另一个系统,它把消息放在这个队列上。 (超出我们的范围)
我们可以在队列中一次读取 2000 条消息。
有时,消息侦听器停止从队列读取消息,当我尝试解决此问题时,它给出了队列中有一些未提交消息的原因,该侦听器尝试读取并且无法进一步处理并且自己挂在那里。
当从队列中手动删除该消息时,它会完美地处理其他消息。
那么如何跳过这些未提交的消息,以便系统可以继续下一条消息?
【问题讨论】:
标签: ibm-mq spring-integration spring-jms