0

我有一个用于 JMS 消息传递的主/从 AMQ 代理设置。我有两台服务器,我想使用 Apache Camel 将它们设置为主/从持久消费者。我们通过让两台服务器尝试连接相同的客户端 ID 来实现这一点。一个节点处理所有工作,但如果它发生故障,另一个节点会连接并立即恢复工作。这对于一次只有一个消费者来说效果很好,但它会在断开连接的服务器的日志文件中产生噪音以及消息

 ERROR org.apache.camel.component.jms.DefaultJmsMessageListenerContainer] 
(Camel (spring-context) thread #0 - JmsConsumer[global.topic.event]) Could 
not refresh JMS Connection for destination 'global.topic.event' - retrying 
using FixedBackOff{interval=5000, currentAttempts=12, 
maxAttempts=unlimited}. Cause: Broker: broker - Client: client already 
connected from tcp://xxx.xx.xx.xxx:xxxx

有没有合适的方法来获得我想要实现的功能?我正在考虑让从服务器 ping 主服务器以协调连接哪个服务器,但我希望使实现尽可能简单。

4

1 回答 1

0

将您在消费者方面对主题的使用转换为虚拟主题。虚拟主题允许您继续让现有的消息流从主题产生和消费,但也让消费者在特别命名的队列上进行侦听。

一旦你从队列中消费,你就可以实现所有的消费者模式——独占消费者(允许热备份消费者)、消息组、并行消费者等。

于 2018-08-16T01:24:04.757 回答