【问题标题】:How to make involve all consumers for processing pending messages?如何让所有消费者参与处理未决消息?
【发布时间】:2023-03-18 15:35:01
【问题描述】:

Activemq 中有 10 条消息,我们启动了 2 个消费者。但只有第一个消费者消费和处理消息。第二个消费者不消费消息。

如果我在第一个消费者处理时间时再向Queue 发送一条消息,则第二个消费者只消费和处理该特定消息(我们在第一个消费者处理时间时发送了一条消息)。在它不消费待处理消息之后。

最后我的理解是,所有待处理的消息都由第一个消费者处理,而不是剩余的消费者。

我想让所有消费者参与处理待处理的消息。

谢谢。

【问题讨论】:

    标签: jms activemq


    【解决方案1】:

    我认为您正在查看的是 prefetch limit 导致一个消费者预先占用一堆消息,从而使其他消费者挨饿。您需要降低消费者prefetch 限制,以便代理不会急切地将消息发送给第一个连接的消费者,并允许其他消费者上线以帮助平衡负载。

    在您的情况下,预取限制为 1 将允许所有消费者加入并获得一些工作。

    【讨论】:

    • 你的建议是对的。设置Prefetch value=1后它工作正常。我提到像String url="tcp://localhost:61617?jms.prefetchPolicy.queuePrefetch=1".这是正确的做法。
    猜你喜欢
    • 2021-10-11
    • 2016-05-04
    • 2017-12-21
    • 1970-01-01
    • 2017-03-29
    • 2020-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多