Camel 连接到ArtemisMQ群集的Qpid客户端连接工厂

chhkpiq4  于 2022-11-07  发布在  Apache
关注(0)|答案(1)|浏览(146)

我正在尝试使用Apache Camel和Qpid JMS客户端连接到在两个不同节点(VM)上运行的ActiveMQ Artemis主动-主动集群。

Broker1 --- Host1:5672 (active)
Broker2 --- Host2:5672 (active)

我正在试着找出我的org.apache.qpid.jms.JmsConnectionFactory示例的remoteURI配置。使用ampq://host1:5672,ampq://host2:5672不起作用。我在documentation中没有看到任何引用。
我希望生产者通过循环调度或默认方式将消息推送到两个代理,我希望消费者以负载平衡的方式使用来自两个代理的消息。
对于主备份配置,以下操作有效:

<bean id="jmsampqConnectionFactory" class="org.apache.qpid.jms.JmsConnectionFactory">
   <property name="remoteURI" value="failover:(ampq://host1:5672,ampq://host2:5672)" />
   <property name="username" value="user"/>
   <property name="password" value="pass"/>
</bean>

对于主-从配置,这是可行的。因此,当主服务器处于活动状态时,客户端向主服务器发送消息,当主服务器处于关闭状态时,客户端向从服务器推送消息。我们在这方面没有遇到任何问题。但是,对于主动-主动配置,这是行不通的。我应该使用什么URL?
作为参考,代理配置与我以前的Stack Overflow question中的相同。

relj7zay

relj7zay1#

Qpid JMS客户端目前没有(将来也不会)扇出或扇入样式的连接处理程序来自动处理这种情况。如果使用故障转移,请重新连接到另一个提供的代理URI,这就是为什么您描述的主/辅配置工作正常,而主动/主动配置不工作的原因。
您可以通过其他方式来解决这个问题,例如camel路由,它可以沿着这些方式来实现,或者您可以创建自己的JMS层来创建扇出和扇入样式的连接代理,但是如何实现这一点超出了本问题的范围。

相关问题