Это зависит от вашего приложения, на самом деле.
RabbitMQ умеет отправлять сообщения, поэтому он отправит сообщение только узлу в кластере, если
- очередь, которая содержит это сообщение, находится на этом узле или
- , если потребитель подключился к этому узлу и запросил сообщение.
Как правило, вы должны стремиться объявлять очереди на узлах, к которым будут подключаться как издатели, так и потребители для этой очереди. Другими словами, вы должны стремиться соединить издателей и потребителей с узлом, который содержит очереди, которые они используют. Это предполагает, что вы пытаетесь сохранить используемую пропускную способность в целом.
Если вы используете кластеризацию для повышения пропускной способности (а вы, вероятно, и есть), и вас не волнует используемая внутренняя пропускная способность, вы должны стремиться к сбалансированному подключению своих издателей / потребителей к узлам и не беспокоиться о внутренние механизмы маршрутизации.
Последнее, о чем нужно подумать, это память и дисковое пространство. Очереди хранят сообщения в основной памяти, а в случае отказа - на диск. Таким образом, если вы объявите все свои очереди в одном месте, это приведет к одному «перегруженному» узлу и двум узлам с резервной памятью.