【问题标题】:Can topic messages be made persistent in activemq?主题消息可以在activemq中持久化吗?
【发布时间】:2012-02-08 03:48:27
【问题描述】:

我对 JMS 和 ESB 非常陌生。 我使用 activemq 作为 JMS 和 mule 作为 ESB。当我使用 jms 连接器参数“persistentDelivery”为“true”将消息从一个队列转发到另一个队列时,它会在 activemq 重新启动后将消息保留在目标队列中。但是在将消息从一个主题转发到另一个主题的情况下,重新启动后消息不会保留在目标主题中。

activemq中的topic对消息的持久化有什么限制吗?

提前致谢。

问候, 阿里吉特

【问题讨论】:

    标签: activemq


    【解决方案1】:

    主题的不同之处在于,只有存在持久消费者时才会保留消息。

    查看这些以获取更多信息...

    http://activemq.apache.org/how-do-durable-queues-and-topics-work.html

    http://stefanlearninglog.blogspot.com/2009/07/persistent-jms-topics-using-activemq.html

    【讨论】:

      【解决方案2】:

      Activemq 中的主题不是持久的和持久的,所以万一你的一个消费者宕机了。你会丢失你的消息。

      要使主题持久且持久,您可以通过为每个消费者创建唯一的客户端 ID 来创建持久消费者。

      但同样,如果您遵循微服务架构,这不是分布式的。因此,多个 pod 或副本在消费消息时会产生问题,因为持久消费者无法实现负载平衡。

      为了缓解这种情况,Activemq 中有一个虚拟主题选项。下面提供了更多详细信息,

      您可以通过您的生产者在名为 VirtualTopic.MyTopic 的主题中发送消息。 ** 注意:对于默认的 activemq 配置,您必须遵循此命名约定。但是是的,还有一种方法可以覆盖此命名约定。

      现在,要通过多个消费者使用您的消息,您还必须为您的消费者端目的地设置命名约定,例如。 Consumer.A.VirtualTopic.MyTopic Consumer.B.VirtualTopic.MyTopic 这两个消费者将通过上面创建的主题接收消息,同时在同一消费者的多个副本之间启用负载平衡。

      我希望这将帮助您解决有关 activemq 主题的问题。

      【讨论】:

        猜你喜欢
        • 2015-06-16
        • 2018-07-14
        • 2012-05-22
        • 2011-10-12
        • 2018-04-19
        • 2015-08-22
        • 2012-07-30
        • 1970-01-01
        • 2016-05-29
        相关资源
        最近更新 更多