ActiveMQ的故障转移运输 - 生产者/消费者在不同的主机工作
问题描述:
的ConnectionURLActiveMQ的故障转移运输 - 生产者/消费者在不同的主机工作
failover:(tcp://broker1:61616,tcp://broker2:61616)?andomize=false&jms.useAsyncSend=false&jms.dispatchAsync=false&maxReconnectAttempts=30&maxReconnectDelay=3000&jms.prefetchPolicy.queuePrefetch=1000
场景:
生产者把消息
create connection
put message
close connection
监听器(AUTO_ACK)的queue_1 - 有很长的因为这是一个听众
retrieves the message
puts it in queue_2 (client_ack)
broker_1下降 - 运行定期
create connection
retrieves everything from queue_2
processes messages
ack messages
close connection
问题3210
主题。 FailoverTransport将流量重定向到broker_2。所有三个部分(Procuder,Listener和Thread)都与broker_2一起工作。 broker_1已退回。 Procuder和Thread连接到broker_1。监听器保留在broker_2上。令人惊讶的是 - 当消息在broker_1上发送给队列_1时,onMessage被调用,但是监听器将消息放置在broker_2上的queue_2上。
如何让监听者重新连接到broker_1,一旦其再次可用?还是应该让生产者和线程与broker_2一起工作?
答
如果经纪人联网在一起,只有当连接不平衡时才会有问题。如果您的流量和连接数量适中,则不一定有问题。
ActiveMQ支持基于“最佳猜测”自动重新平衡客户端。
- 配置代理网络
- 更新您的openwire传输连接器使用 'updateClusterClients = “真正的”' 和 'rebalanceClusterClients = “真”'
裁判:http://activemq.apache.org/networks-of-brokers.html
裁判:http://activemq.apache.org/failover-transport-reference.html
如果您希望管理员能够手动重新平衡连接,Media Driver Integrate d控制台提供了一种方法:https://mediadriver.com/software/
披露:我负责Media Driver的产品开发。