What is the difference between prefetch count vs no ack in rabbitmq

笑着哭i 提交于 2019-12-01 10:11:09

Pre-fetch count: How many messages the consumer should read from queue and kept internally rather than picking one message at a time.

No-Ack: Do not acknowledge back that the consumer is done consuming the message.

Those both are used to fine tune your set-up

To address your second part of the question: If you set prefetch count to 10, 10 consumers won't be created, but your single consumer will fetch 10 messages at a time.

And if you create 10 consumers it will most likely create 10 threads (or processes). It all depends on how you configure it. Most likely you will be wanting to use a thread pool though

To answer this specifically for spring-amqp.

prefetchCount=10 means the broker allows up to 10 unacked message for each consumer; it does not affect the number of threads.

Use concurrentConsumers to create multiple consumers - which will have one thread each.

auto ack means the broker doesn't requires acks (so you can lose messages). Spring AMQP also blocks deliveries (to prefetch count) if the listener can't keep up.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!