在rabbitmq中预取计数与无ack之间有什么区别

时间:2016-09-26 09:55:27

标签: rabbitmq spring-amqp spring-rabbit

我需要知道在rabbitmq中prefetch count与no ack之间的区别是什么?

另外 以下陈述之间有什么区别: -

如果我设置了预取计数,那么10会创建10个消费者线程吗? 或者 -

如果我注册10个cosumers会创建10个线程吗?

以上哪项更有效

2 个答案:

答案 0 :(得分:6)

专门针对spring-amqp回答这个问题。

prefetchCount=10表示经纪人为每个消费者提供最多10条未包装消息;它不会影响线程数。

使用concurrentConsumers创建多个消费者 - 每个消费者都有一个帖子。

auto ack意味着代理不需要确认(因此您可以丢失消息)。如果监听器无法跟上,Spring AMQP还会阻止交付(预取计数)。

答案 1 :(得分:3)

预取计数:消费者应从队列中读取并保留多少消息,而不是一次选择一条消息。

No-Ack:不要回复消费者已完成消费。

这两者都用于微调您的设置

解决问题的第二部分: 如果您将预取计数设置为10,则不会创建10个消费者,但您的单个消费者将一次获取10个消息。

如果你创建10个消费者,它很可能会创建10个线程(或进程)。这一切都取决于你如何配置它。很可能你会想要使用线程池