RabbitMQ потребляет одно сообщение перед получением нового

Если я отправляю сообщение задаче внутри моей службы и возвращаюсь из обратного вызова RabbitMQ «Received», я немедленно получаю новый обратный вызов. Это не предназначено, поскольку моя служба будет работать как новая очередь и делает создание нового рабочего более менее бесполезным, поскольку первая служба удалила все сообщения из очереди.

Я вижу в примерах Python, что обратный вызов подтверждает сообщение, когда оно выполнено, а C# — нет. Может ли эта резервная кровать использоваться для блокировки новых сообщений до тех пор, пока текущее сообщение не будет обработано.

Также находит блокировку функции события «Получено» семафором до тех пор, пока обработка не будет выполнена очень и очень хакерской.


person Mabzy    schedule 22.10.2019    source источник


Ответы (1)


Вам нужно установить потребительскую предварительную выборку на 1: https://www.rabbitmq.com/consumer-prefetch.html

Подтвердите сообщение, когда закончите с ним, и вы получите следующее.


ПРИМЕЧАНИЕ. команда RabbitMQ отслеживает rabbitmq-users список рассылки и лишь иногда отвечает на вопросы в StackOverflow.

person Luke Bakken    schedule 22.10.2019