【问题标题】:How to Prevent Multiple Instances of the Same Microservice Reading the Same Message from an ActiveMQ Artemis Topic如何防止同一微服务的多个实例从 ActiveMQ Artemis 主题中读取同一消息
【发布时间】:2021-02-15 22:22:19
【问题描述】:
这个问题与here 类似,但我不确定如何解决这个问题
我有一个 ActiveMQ Artemis Broker v 2.16.0 和带有 spring-jms 5.3.3 的 Spring 微服务项目。我有两个订阅主题的微服务 A 和 B。由于工作量大,我有两个微服务 A 实例正在运行。如何配置微服务 A 的两个实例以连接到主题但不使用相同的消息?
【问题讨论】:
标签:
spring-jms
activemq-artemis
jms-topic
【解决方案1】:
一般来说,每个 JMS 主题订阅者都会收到发送到该主题的每条消息。但是,JMS 2 引入了“共享”订阅的概念,其中 2 个订阅者共享同一个订阅,因此只有其中一个订阅者会收到任何特定消息。您需要在配置 JMS 侦听器容器工厂时调用 setSubscriptionShared(true) 才能启用此行为。