繁体   English   中英

具有多个使用者的Activemq主题

[英]Activemq Topic with multiple consumers

我现在正在处理这个问题很多时间,似乎无法找到任何最终解决方案。 我有一个消息生产者,应该充当广播者,发布有关两个不同主题的消息。 发布者的发布过程遵循以下流程:

  • 创建与工厂的连接并启动它。
  • 建立工作阶段
  • 通过使用会话和给定的主题名称创建Message Producer
  • 发送n *条消息
  • 等待n秒
  • 结束制作人,会话,连接

然后,我有3个使用者通过使用以下配置来订阅了这些主题(每个使用者都拥有自己的clientIddurableSubscriptionName ):

<route id="consumerOneRoute">
    <from uri="activemq:topic:topicName?clientId=consumerOneId&durableSubscriptionName=ConsumerOneName" />
    <bean ref="consumerBean" method="processMessage" />
</route>

事实是,我的消费者并非总是收到消息,至少不是全部。 有时有两个消费者获得了所有消息,而第三个消费者没有得到任何消息,有时随机的消费者收到了随机数量的消息,依此类推...我注意到的另一个事实是,如果我停止经纪人并再次启动它,消费者将收到丢失的消息,我真的不明白为什么在经纪人的第一生期内不会发生这种情况。 有人会这么友善并尝试帮助我吗?

谢谢,乔治。

PS:我一直在考虑使用虚拟主题,因为我的主要目的是要拥有一个广播制作人,以便将来允许其他消费者加入,所以我不想每次都通过添加另一个虚拟分支来修改制作人到主要话题。

我遇到了类似的问题,有1个生产者通过主题将消息发送给许多消费者,但并非所有人都收到消息。 问题出在消费者的超时中,我手动创建了超时,它比ActiveMQ可以传递最后的消息短。 延长超时-帮助。

看一下Prefetch Policy 如果将其设置为1,则可能会为您修复此问题。

...&consumer.prefetchSize=1

唯一有效的解决方案是从具有持久性使用者的主题切换到虚拟主题。

生产者发送消息时,您的消费者必须连接到代理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM