rabbitmq中的预取计数与无确认之间有什么区别

rabbitmq中的预取计数与无确认之间有什么区别,rabbitmq,spring-amqp,spring-rabbit,Rabbitmq,Spring Amqp,Spring Rabbit,我需要知道rabbitmq中预取计数与无应答之间的区别是什么 也 以下陈述之间的区别是什么:- 如果我设置预回迁计数,那么是否创建了10个使用者线程? 或-- 如果我注册10个cosumer,它会创建10个线程吗 上面哪项更有效预取计数:消费者应该从队列中读取并在内部保存多少消息,而不是一次只拾取一条消息 No Ack(无确认):不确认消费者已消费完消息 这两者都用于微调您的设置 请回答问题的第二部分: 如果将预回迁计数设置为10,则不会创建10个使用者,但您的单个使用者将一次获取10条消息 如

我需要知道rabbitmq中预取计数与无应答之间的区别是什么

也 以下陈述之间的区别是什么:-

如果我设置预回迁计数,那么是否创建了10个使用者线程? 或--

如果我注册10个cosumer,它会创建10个线程吗


上面哪项更有效

预取计数:消费者应该从队列中读取并在内部保存多少消息,而不是一次只拾取一条消息

No Ack(无确认):不确认消费者已消费完消息

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

请回答问题的第二部分: 如果将预回迁计数设置为10,则不会创建10个使用者,但您的单个使用者将一次获取10条消息


如果您创建10个使用者,则很可能会创建10个线程(或进程)。这完全取决于您如何配置它。您很可能希望使用线程池来专门针对spring amqp回答这个问题

prefetchCount=10
表示代理最多允许每个消费者发送10条未确认的消息;它不影响线程数

使用
concurrentConsumers
创建多个使用者-每个使用者将有一个线程


自动确认意味着代理不需要确认(因此您可能会丢失消息)。如果侦听器无法跟上,Spring AMQP也会阻止传递(预取计数)。

这是正确的答案。被接受的那个是错误的。如果设置了自动确认(true),则代理将继续传递消息,而不关心预取计数。