Делает ли Rabbitmq Round-Robin от обмена к очереди
-
25-09-2019 - |
Вопрос
В настоящее время я оцениваю системы очереди сообщений и rabbitmq кажутся хорошим кандидатом, поэтому я немного больше копаю в нем.
Чтобы дать небольшой контекст, я ищу что-то вроде одного обмена нагрузкой, балансируя сообщение публикации для нескольких очередей. Я не хочу реплицировать сообщения, поэтому обмен веейтером не является опцией.
Также причина, по которой я думаю о том, чтобы иметь несколько очередей против одной очереди, обрабатывающую круглый робин с потребителями, заключается в том, что я не хочу, чтобы наша единственная точка неспособности быть на уровне очереди.
Похоже, что я мог бы добавить какую-нибудь логику на стороне издателя, чтобы имитировать это поведение, отредактировав ключ маршрутизации и имея соответствующие привязки на месте. Но это своего рода пассивный подход, который не приведет к тому, что темпы потребления сообщения на каждой очереди, потенциально приводят к заполнению одной очереди, если потребительские приложения для этой очереди мертвы.
Я искал более активную сторону от стороны Exchange Entity, которая решила, где отправить следующее сообщение на основе каждого размера очереди или что-то в этом природе.
Я читал о Алисе и доступных reзов API, но это кажется видом тяжелого решения для реализации быстрого маршрутизации решений.
Кто-нибудь знает, если круглый робин между биржевым очередями возможен W / Rabbitmq тогда? Спасибо.
Решение
Обмены, как правило, вообще нестабильные в модели AMQP, хотя в настоящее время были некоторые недавние эксперименты в госсекретных биржах, когда есть как система управления плагинами Rabbitmq и для предоставления новых типов экспериментальных обмен.
Нет ничего, что делает вполне то, что вы хотите, я не думаю, хотя я не совсем уверен, что понимаю требование. Помимо единственной точки отказа, имел бы одну очередь с чтением рабочих от него решают вашу проблему? Если это так, то ваша проблема уменьшается для настройки rabbitmq в конфигурации HA, которая позволяет вам использовать это решение. Существует пару подходов для этого: либо используйте Halinux и общий магазин, чтобы получить активный / пассивный HA с быстрым отключением или установить более одного параллельного брокера и дедупликата на клиенте, возможно, используя Redis или подобное для этого.
Я предлагаю задавать ваш вопрос снова на списке рассылки Rabbitmq-Desish, где больше людей смогут предложить предложения, и где обсуждение может быть заархивировано для потомства.
Другие советы
Согласен с Тони на подходе.
Вот «Mashup» of Rabbitmq, Redis, который вы могли бы использовать вместо того, чтобы прокатитьсяhttp://xing.github.com/beetle/
Один построен в построенном виде, вы можете сделать форму обмена форм обмена на очередь, но не совсем круглый Робин, является последовательным хешированием. rabbitmq_consistent_hash_exchange
Как тожеhttps://medium.com/@eranda/rabbitmq-x-consistent-hashing-with-wso2-esb-27479b8d1d21.
Бумага, чтобы объяснить, она ставит очереди под взвешенным распределением на круг, а затем отправив ключ случайных маршрутизации, он отправит в ближайшую очередь.http://www8.org/w8-papers/2a-webserver/caching/appa2.html.