RabbitMQ: публикация сообщения, когда потребитель не работает, а позже потребитель не может использовать сообщение без именованной очереди - PullRequest
0 голосов
/ 20 декабря 2018

У меня есть производитель и потребитель. Несколько экземпляров потребителя работают.Когда производитель публикует сообщение, я намерен использовать его всеми экземплярами.Итак, я использую прямой обмен.Продюсер публикует сообщение для прямого обмена с темой.Потребители слушают эту тему с эксклюзивной очередью.Этот процесс работает нормально, когда потребитель включен, а производитель публикует сообщение.Но когда потребители не работают, а производитель публикует сообщение, потребители не потребляют это сообщение, когда оно вышло.

Я гуглил эту проблему.Предложение было использовать именованную очередь.Но если я использую именованную очередь, сообщения будут использоваться в соответствии с алгоритмом циклического перебора.Это не соответствует моим ожиданиям использовать одно и то же сообщение всеми потребителями.

Есть ли другое решение?

Благодарим вас за помощь.

1 Ответ

0 голосов
/ 20 декабря 2018

Существует два решения вашей проблемы.

Использование именованной очереди - одно из них.Установите обмен в режиме разветвления и подпишитесь на него с именованными очередями.При этом, когда издатель отправит сообщение в ваш обмен, оно будет отправлено всем прослушивающим очередям.

После этого вы можете иметь одного или нескольких получателей для каждой очереди (что позволяет масштабировать).Вы должны будете определить именованную очередь / потребителя.Когда один потребитель отключается, его очередь все еще получает сообщения, а когда он возвращается, он может их потреблять.

Вы должны быть в состоянии сделать то, что вы хотите таким образом.

Другой способ больше дляваши личные знания, так как вы сказали, что хотите использовать RabbitMQ.Но в этом конкретном случае вы могли бы использовать Кафху, и ваш потребитель мог после переподключения возобновить работу с индексом сообщений, который был при отключении.

Пожалуйста, обновите меня, если это не работает:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...