Есть ли способ аварийного переключения сообщений в распределенном кластере ActiveMQ? - PullRequest
0 голосов
/ 17 октября 2011

В распределенном кластере activemq, если узел выходит из строя, его сообщения теряются, пока он не возвращается.Есть ли способ продолжать распространять эти сообщения, даже если узел выходит из строя?

Ответы [ 3 ]

0 голосов
/ 18 октября 2011

создать сеть брокера, где у каждого брокера есть подчиненный (например, с прямой репликацией). таким образом, если мастер выходит из строя, ведомый может присоединиться к сети брокера и занять позицию своего бывшего мастера. в зависимости от выбранной схемы репликации бывший мастер-брокер может даже восстановить и снова присоединиться к новому мастеру в качестве подчиненного узла.

например: прямая репликация в сети брокеров

Насколько я знаю, невозможно "заставить" activemq избыточно хранить ожидающие сообщения у нескольких брокеров.

0 голосов
/ 28 октября 2011

Да, вы делаете это с помощью общего хранилища сообщений, и несколько брокеров используют это хранилище. Только один из этих брокеров будет активен в любое время - тот, который первым подключился к магазину. Это управляется с помощью замков. Когда активный посредник падает, второй посредник снимает блокировку и затем становится активным, обрабатывая любые сообщения в хранилище, которые не были отправлены первым посредником. Клиенты (производители и потребители) подключаются к паре брокеров через строку подключения

failover:(tcp://broker1Host:broker1Port,tcp://broker2Host:broker2port)

Только брокер, который удерживает блокировку, будет принимать соединения, поэтому строка аварийного переключения указывает, что клиент должен попытаться подключиться к следующему брокеру в списке. Используя этот механизм, можно даже получить несколько подчиненных, ожидающих смены мастера.

Более подробную информацию об этом можно найти по адресу http://activemq.apache.org/shared-file-system-master-slave.html, если у вас есть доступ к сетевой файловой системе, поддерживающей блокировки (например, SAN или NFS), или, если нет, вы можете использовать базу данных в качестве сообщения. магазин http://activemq.apache.org/jdbc-master-slave.html

0 голосов
/ 17 октября 2011

Вы хотите master-slave га?http://activemq.apache.org/masterslave.html

Проблема с запуском большого количества автономных брокеров или брокеров в сети заключается в том, что сообщения принадлежат одному физическому брокеру в любой момент времени.Если этот брокер выходит из строя, вам нужно дождаться его перезапуска, прежде чем сообщение будет доставлено.(Если вы используете непостоянный обмен сообщениями и брокер выходит из строя, вы, как правило, теряете ваше сообщение.)

Идея, лежащая в основе MasterSlave, заключается в том, что сообщения реплицируются на подчиненного брокера, поэтому даже в случае катастрофического сбоя оборудованияна главном компьютере, файловой системе или в центре обработки данных вы получаете немедленное переключение на ведомое устройство без потери сообщений.

Подробнее здесь: http://activemq.apache.org/replicated-message-store.html

...