Jms 关于发布/订阅主题的ActiveMQ用户组

Jms 关于发布/订阅主题的ActiveMQ用户组,jms,activemq,publish-subscribe,Jms,Activemq,Publish Subscribe,我是ActiveMQ的新手,我想知道是否可以为以下场景进行设置: 服务A和B订阅发布/订阅主题。我使用此主题发送事件,因此感兴趣的服务可以对此作出反应 现在,如果我想扩展服务A,请再添加一个实例。如何确保两个实例不会处理同一事件?最终创建重复的数据 是否可以在ActiveMQ中实现这一点?如果是,如何进行 谢谢。如果您使用的是JMS,那么这个场景确实需要共享主题订阅,而这些订阅是需要的。ActiveMQ 5.x不支持JMS 2,但下一代ActiveMQ代理确实支持JMS 2,因此您应该使用它。V

我是ActiveMQ的新手,我想知道是否可以为以下场景进行设置:

服务A和B订阅发布/订阅主题。我使用此主题发送事件,因此感兴趣的服务可以对此作出反应

现在,如果我想扩展服务A,请再添加一个实例。如何确保两个实例不会处理同一事件?最终创建重复的数据

是否可以在ActiveMQ中实现这一点?如果是,如何进行


谢谢。

如果您使用的是JMS,那么这个场景确实需要共享主题订阅,而这些订阅是需要的。ActiveMQ 5.x不支持JMS 2,但下一代ActiveMQ代理确实支持JMS 2,因此您应该使用它。

Vitor Villar您也可以在ActiveMQ 5.x中使用虚拟主题虚拟主题实际上是消息传递的圣杯—您可以发布到主题并从队列中消费

生产者和消费者未链接到相同的地址队列或主题名称 消费者可以使用所有消费模式—多线程、活动待机和消息组
ref:

虚拟主题是一种潜在的解决方案,但它们是ActiveMQ 5.x所独有的。换句话说,它们不是便携式的。如果您想要一个基于标准的、可移植的解决方案,并且能够与其他JMS2代理一起使用,那么共享主题订阅是一个很好的解决方案。我见过很多用户围绕虚拟主题构建他们的体系结构,因为正如您所注意到的那样,他们功能强大,但是他们仍然停留在ActiveMQ 5.x上。考虑到ActiveMQ Artemis将取代ActiveMQ 5.x,对特定于5.x的体系结构进行这样的投资可能并不明智。目前,我认为虚拟主题将是最佳选择。ActiveMQ Artemis中的虚拟主题的等价物是什么?如果您想要一个基于标准规范的解决方案,那么我建议使用JMS 2的共享主题订阅,正如我在回答中已经描述的那样。如果您现在在5.x中实现一个基于虚拟主题的解决方案,那么您可以。ActiveMQ Artemis的底层架构已经支持这些语义。一般来说,它比5.x.2的主要以JMS为中心的配置更强大、更灵活—虚拟主题模式不是ActiveMQ 5.x独有的。IBMMQ支持完全相同的模式。此外,它如何不符合标准?生产者和消费者的代码都是写在JMS API中的。我关于虚拟主题不标准的观点与其说是关于遵守JMS API,不如说是关于行为是非标准的。虚拟主题允许JMS应用程序发送到主题并从队列中使用。您可以使用JMS API来实现这一点,但其行为不符合JMS。我知道其他一些代理使用类似的语义。这甚至可以在使用FQQN的ActiveMQ Artemis中实现。然而,对于另一个不采用这种语义的JMS提供者来说,它并不是一件容易移植的事情。使用JMS 2可以解决这个问题。