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