主题消息可以在activemq中持久化吗?

时间:2012-01-11 19:09:05

标签: activemq

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

对于activemq中的主题,是否存在消息持久性的限制?

提前致谢。

此致 Arijit

2 个答案:

答案 0 :(得分:7)

答案 1 :(得分:0)

Activemq 中的主题不是持久和持久的,因此万一您的消费者之一宕机。你会丢失你的消息。

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

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

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

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

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

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