gpt4 book ai didi

java - 每 15 条 JMS 消息都会滞留在队列中,直到第一条消息完成

转载 作者:太空宇宙 更新时间:2023-11-04 15:09:26 25 4
gpt4 key购买 nike

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

消息的生存时间为 30 秒。如果第一次消息消费花费的时间比该时间长得多,那么卡住的消息会在队列中停留超过 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 才会导致此问题,但我们不知道可能是什么。

提前致谢!

最佳答案

我已经解决了这个问题。

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

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

关于java - 每 15 条 JMS 消息都会滞留在队列中,直到第一条消息完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21532687/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com