В чем разница между подсчетом предварительной выборки и отсутствием подтверждения в rabbitmq

Мне нужно знать, в чем разница между подсчетом предварительной выборки и отсутствием подтверждения в rabbitmq?

Также в чем разница между следующими утверждениями: -

если я установлю счетчик предварительной выборки, скажем, 10, будет ли создано 10 потребительских потоков? Или же --

если я зарегистрирую 10 пользователей, будет ли создано 10 потоков?

Что из перечисленного эффективнее


person Akshat    schedule 26.09.2016    source источник


Ответы (2)


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

No-Ack: не подтверждайте, что потребитель закончил использовать сообщение.

Оба они используются для точной настройки вашей настройки.

Чтобы ответить на вашу вторую часть вопроса: если вы установите счетчик предварительной выборки равным 10, 10 потребителей не будут созданы, но ваш единственный потребитель будет получать 10 сообщений за раз.

И если вы создадите 10 потребителей, скорее всего, будет создано 10 потоков (или процессов). Все зависит от того, как вы его настроите. Скорее всего, вы захотите использовать пул потоков.

person Arun Karunagath    schedule 26.09.2016

Чтобы ответить на это специально для spring-amqp.

prefetchCount=10 означает, что брокер разрешает до 10 неподтвержденных сообщений для каждого потребителя; это не влияет на количество потоков.

Используйте concurrentConsumers для создания нескольких потребителей, каждый из которых будет иметь по одному потоку.

автоматическое подтверждение означает, что брокер не требует подтверждения (поэтому вы можете потерять сообщения). Spring AMQP также блокирует доставку (для подсчета предварительной выборки), если слушатель не может идти в ногу.

person Gary Russell    schedule 26.09.2016
comment
Это правильный ответ. Принятый неверен. Если auto-ack установлен (true), брокер будет продолжать доставлять сообщения, не заботясь о количестве предварительной выборки. - person Ankush G; 22.10.2020