Как безопасно потреблять из эксклюзивной очереди в RabbitMQ?

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

Есть ли способ сделать этот сценарий более надежным? Есть ли способ повторно поставить эти сообщения в другую очередь, которая все еще жива? Я думал, что могу использовать обмены недоставленными письмами, но похоже, что сообщения такого типа (для которых сервер не может повторно поставить в очередь после сбоя потребителя) не управляются DLX.

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

Любая помощь будет оценена по достоинству.


person Zuhaitz Beloki    schedule 18.12.2020    source источник


Ответы (1)


Если требуется исключительное потребление и непрерывность потребления, более подходящим может быть один активный потребитель.

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

Вы можете посетить документацию, чтобы узнать больше.

person spike 王建    schedule 22.12.2020