2016-12-05 8 views
0

ConnectionURLActiveMQ отказоустойчивый транспорт - производители/потребители работают на разных хостах

failover:(tcp://broker1:61616,tcp://broker2:61616)?andomize=false&jms.useAsyncSend=false&jms.dispatchAsync=false&maxReconnectAttempts=30&maxReconnectDelay=3000&jms.prefetchPolicy.queuePrefetch=1000 

Сценарий:

Производитель помещает сообщение в queue_1

create connection 
put message 
close connection 

Слушатель (auto_ack) - имеет длинный поскольку это слушатель

retrieves the message 
puts it in queue_2 (client_ack) 

Thread, который периодически запускается

create connection 
retrieves everything from queue_2 
processes messages 
ack messages 
close connection 

Проблема - broker_1 идет вниз. FailoverTransport перенаправляет трафик на broker_2. Все три части (Procuder, Listener и Thread) работают с broker_2). broker_1 возвращен. Прокудер и поток подключаются к broker_1. Слушатель остается на broker_2. Удивительно - вызов onMessage вызывается, когда сообщение появляется в queue_1 на broker_1, но слушатель помещает сообщение queue_2 в broker_2.

Как я могу проинструктировать слушателя повторно подключиться к broker_1 после его повторного запуска? Или я должен принудить Producer and Thread работать с broker_2 до тех пор, пока он работает?

ответ

0

Если брокеры объединены в сеть, это будет иметь значение только в случае дисбаланса соединений. Если ваш объем трафика и количество подключений умеренные, у вас не обязательно будет проблема.

ActiveMQ поддерживает автоматическое перебалансирование клиентов на основе «наилучшего предположения».

  1. Настройте сеть брокеров
  2. Update коннектором openwire транспорта использовать 'updateClusterClients = "истинный"' и 'rebalanceClusterClients = "истинный"'

реф: http://activemq.apache.org/networks-of-brokers.html

реф : http://activemq.apache.org/failover-transport-reference.html

Если вы хотите, чтобы администраторы могли вручную перенастраивать соединения, интегрировать Media Driver Integrate d Console обеспечивает такой способ: https://mediadriver.com/software/

Раскрытие информации: Я разрабатываю продукт в Media Driver.