我正在使用Apache Camel's AMQP组件监听来自ActiveMQ Artemis主题的消息。
此应用程序在具有两个副本的Kubernetes上运行。
我已经配置了一个长期订阅,每个单元都有一个唯一的clientId和一个通用订阅名称:
<route autoStartup=true" id="myRoute">
<from id="_amqp_topic" uri="amqp:topic:xxx?connectionFactory=#amqpCF&disableReplyTo=true&transacted=false&subscriptionDurable=true&clientId={{container-id}}&durableSubscriptionName=eventSubscription"/>
<log loggingLevel="INFO" message="Received event: ${body}"/>
...
</route>
问题是两个pod都接收到消息,而只有其中一个应该接收。我试图实现类似于Kafka's consumer groups的东西,其中只有组中的一个成员接收每个消息。
1条答案
按热度按时间eqqqjvef1#
如果您希望只有一个订户接收消息,则订户必须 * 共享 * 同一订阅。因此,您需要:
_amqp_topic
uri
中设置subscriptionShared=true
{{container-id}}
)例如:
另一种选择是简单地使用队列而不是主题,例如: