【问题标题】:Active MQ consumer is receiving only the alternative messages活动 MQ 使用者仅接收替代消息
【发布时间】:2013-05-11 07:34:50
【问题描述】:

要求:一个 activemq 队列应该在一台机器上运行(比如 machine1)。应该从 machine1 和另一台机器(比如 machine2)访问该队列。监听器将只在 machine1 中运行。所以,我的所有消息发送到 machine1 和 machine2 应进入 machine1 中可用的队列,并应由同一台机器(machine1)中可用的侦听器接收。

问题:我发送到 machine1 和 machine2 的所有消息都进入队列,但侦听器只接收替代消息。假设 1、3、5 并且它无法接收消息 2、4 .....

观察:假设如果在 machine1 和 machine2 中有侦听器,它正在正确接收,即; machine1 中的监听器接收到 1、3、5 ..... 而 machine2 中的监听器接收到 2,4,6............

【问题讨论】:

    标签: java jakarta-ee tomcat jms activemq


    【解决方案1】:

    ActiveMQ 默认使用 RoundRobin 分发。因此,如果正如您所解释的,您的队列中有 2 个消费者(机器 1 和机器 2),机器 1 将只收到一半的消息。 即使您在 machine2 上没有处理消息的进程,该主机上的 ActiveMQ 客户端也可能正在使用它们。 如果您希望 2 个客户端可以使用消息,则必须使用主题而不是队列。

    【讨论】:

    • 我们需要持久化数据并处理任何服务器问题。如果我们使用主题,如何持久化数据?。我们还必须按顺序阅读味精。所以只需要运行一个消费者(接收者)。
    • @SelvamR 如果您想为订阅者离线的主题保留和保存消息,请使用持久订阅者:activemq.apache.org/manage-durable-subscribers.html
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-25
    • 2016-11-22
    • 2016-04-08
    • 1970-01-01
    • 2010-10-05
    • 2020-03-10
    • 1970-01-01
    相关资源
    最近更新 更多