Обмен отправляет новые рабочие места продукта в очередь "newProduct", из которой потребляют все потребители.
Это выглядит хорошо для меня.
Потребитель y, который читает такое сообщение, уведомляет службу производителя (в отдельной очереди), что теперь он отвечает за продукт x.Это также хорошо, я думаю, что если производитель не получил уведомление о том, что продукт X позаботился о нем, он должен будет что-то сделать.Затем производитель отправляет все сообщения для продукта x в очередь, соответствующую потребителю y.
Я отправляю все сообщения для продукта X с тем же ключом маршрутизации, как product-X
.Что ты имеешь в виду здесь?Я бы не стал рассказывать продюсеру, который сейчас точно занимается продуктом X.Для лучшего разделения интересов и простоты производители должны знать как можно меньше о потребителях и их очередях и наоборот.
Когда новый потребительский сервис z выходит в онлайн, он уведомляет сервисный центр о конкретном, поэтомуочередь, что он в сети, так что производитель может создать привязку в обмен на правильную очередь z.
Вы можете сделать это таким образом, но я бы сделал это по-другому:
Когда потребитель выходит в сеть, он сам создает необходимые очереди (или подписывается на существующие очереди).
Я вижу это так:
- Потребитель подключается к сети и подписывается на очередь новых продуктов.
- Когда получено сообщение для обработки продукта Z:
- Создает для себя новую очередь с ключом привязки
product-Z
- Уведомляет производителя о том, что продукт Z в настоящее время обрабатывается
- Производитель начинает отправлять сообщения с ключом маршрутизации
product-Z
, и они заканчиваются вОчередь потребителя.
Убедитесь, что у вашего потребителя есть высокая доступность, в противном случае вы можете оказаться в ситуации, когда ваш потребитель начал обрабатывать некоторые сообщения, а затем ушел из строя, в то время как производитель продолжает отправлятьсообщения для необработанного продукта.