每隔15条JMS消息就会卡在队列中,直到第一条消息结束

时间:2014-02-03 16:37:53

标签: java java-ee jms

我们正面临一个问题,即在MDB实例未完成第一条消息的处理之前,不会从消息队列中读取每第15条消息。

我们有30秒的timeToLive消息。如果第一个消息消耗所花费的时间比那么多,则卡住的消息在队列中停留超过30秒,因此当慢速消息停止时超时。

MDB池大小为20,但尝试过30,10,......没有区别。

场景如下:

#1 SLOW消息进入队列,MDB onMessage()调用,消息处理。

#2-14消息进入队列,调用MDB onMessage(),处理消息。

#15消息进入队列,消息未被触及。

#16-29消息进入队列,MDB onMessage()调用,消息处理。

#30消息进入队列,消息未被触及。

......每15日就会卡住

#1结束,然后立即每隔15条消息(卡住)因消息超时而被丢弃。

总是每15个消息......

我们使用的是JBOSS EAP 6.1并使用JAVA 7

任何人都可以给我们一些关于这个问题的提示,可能是什么原因,在哪里看?必须将某些东西配置为导致这种情况的15,但我们不知道它可能是什么。

提前致谢!

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题。

这是因为基于hornetq窗口的流量控制。

这篇文章包含解决方案: JMS queue with multiple consumers