2010-11-10 4 views
3

Я хочу установить RabbitMQ как два (или более) узла кластера с HA.rabbitmq HA cluster

Использование: приложение-клиент-клиент (C# .NET) знает, что кластер имеет два узла и публикует кластер. Различные потребительские приложения (также C# .NET) подключаются к кластеру и получают все сообщения, созданные производителем. Пока по крайней мере один узел работает и работает, производитель и потребители будут продолжать работать без ошибок. Предполагая, что узлы A и B запущены, а B некоторое время умирает, затем перезапускается, затем некоторое время A умирает, клиенты продолжают функционировать без получения ошибки, так как во все времена по крайней мере один узел вверх.

Можно ли это сделать из коробки?

Есть ли какие-либо другие MQ, которые были бы более подходящими (коммерческая версия) для среды приложений Windows/.NET?

ответ

6

Можно ли это сделать из коробки?

No. Когда узел опускается, все его соединения закрыты. Поскольку соединения AMQP имеют статус «stateful», об этом нет. То, что вы могли бы достичь, - это 1) брокер идет вниз, 2) все клиенты отключаются, 3) клиенты подключаются к другому узлу (маскируются как оригинальные) и не являются более мудреными.

На боковой ноте кролик не поддерживает активную активную кластеризацию HA в данный момент. Он поддерживает active-passive clustering и форму logical clustering (это может быть то, что вы ищете).

+0

Итак, после того, как клиент обнаружил, что соединение мертво (это AlreadyClosedException?), Нужно просто попытаться подключиться к кластеру, и один из оставшихся узлов должен автоматически назначаться для его использования? –

+0

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

+0

Итак, с балансировщиком нагрузки будет только один IP-адрес для клиентов, но сами erlang-узлы будут использовать свой реальный IP-адрес? –

7

RabbitMQ v2.6.0 теперь поддерживает очереди с высокой доступностью, используя активную/активную кластеризацию. Microsoft и ряд других компаний сотрудничали на Apache QPid, который имеет привязки C# и который также поддерживает активную/активную кластеризацию HA.

Смежные вопросы