activemq-artemis - ActiveMQ Artemis:2 节点集群不使用队列
问题描述
我有一个非常简单的设置,有 2 个节点(相互连接)。我有一个单元测试,它在队列上生成 10 条消息,然后使用队列中的所有消息,然后检查它是否收到 10 条消息。
这是生产者和消费者设置
<bean id="queueListener" class="SessionAwareMessageListener<TextMessage>" />
<jms:listener-container container-type="default" destination-type="queue" connection-factory="brokerPooledConnectionFactory" acknowledge="auto">
<jms:listener destination="queue.private.mb.sanity.V4" ref="queueListener" />
</jms:listener-container>
<bean id="queuePublisher" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="brokerPooledConnectionFactory" />
<property name="defaultDestinationName" value="queue.private.mb.sanity.V4" />
</bean>
和连接设置
<amq:connectionFactory
brokerURL="failover:(tcp://${broker1.host}:${broker1.port},tcp://${broker2.host}:${broker2.port})?maxReconnectAttempts=1&startupMaxReconnectAttempts=1"
closeTimeout="100" id="brokerConnectionFactory" />
<!-- Pools of connections -->
<bean id="brokerPooledConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory" init-method="start" destroy-method="stop">
<property name="maxConnections" value="5" />
<property name="idleTimeout" value="0" />
<property name="connectionFactory" ref="brokerConnectionFactory" />
<property name="maximumActiveSessionPerConnection" value="100" />
<property name="timeBetweenExpirationCheckMillis" value="60000" />
<property name="expiryTimeout" value="600000" />
</bean>
我看到的是消息在 2 个节点上发送。第二个节点收到的消息全部被消费。第一个节点收到的一些消息被路由到第二个节点并从第二个节点消费。在第一个节点上接收到的其他消息既不被路由也不被消费。
如果我启动一个直接连接到第一个节点的消费者,它就可以使用这些消息。
使用主题而不是队列的相同测试可以正常工作。
知道为什么我会面临这种行为吗?
谢谢
尼古拉斯
解决方案
确实,这是一个设置问题。消息负载平衡设置为 STRICT 而不是 ON_DEMAND。
推荐阅读
- mysql - 单表与多表?
- ipad - ipad 和 iphone 上的 textarea 断字 - 蓝牙扫描仪条码斑马
- onedrive - 一驱照片分享
- amazon-web-services - 了解 DNS - 在 Namecheap 和 Route 53 中设置 DNS?
- r - 无法在 bookdown 中插入绘图
- javascript - 用于将某物分配为对象属性的函数?
- java - 在 selenium 黄瓜集成场景中插入“enum Identifier”完成 EnumHeader
- android - Google 登录,服务器端访问 - 为什么它是一种不太安全的登录技术?
- c# - 如何使用两位小数显示 DataGridView 列和文本框?
- html - 为什么反应中父div和内部div之间有空格?