我需要知道在rabbitmq中prefetch count与no ack之间的区别是什么?
以下陈述之间有什么区别: -
如果我设置了预取计数,那么10会创建10个消费者线程吗?要么 -
如果我注册10个cosumers它会创建10个线程吗?
以上哪项更有效
预取计数:消费者应从队列中读取并保留多少消息,而不是一次选择一条消息 .
No-Ack:不要回复消费者已完成消费 .
这两者都用于微调您的设置
要解决问题的第二部分:如果将预取计数设置为10,则不会创建10个使用者,但您的单个使用者将一次获取10个消息 .
如果你创建10个消费者,它很可能会创建10个线程(或进程) . 这一切都取决于你如何配置它 . 很可能你会想要使用一个线程池
为spring-amqp专门回答这个问题 .
prefetchCount=10 表示经纪人为每个消费者提供最多10条未包装的消息;它不会影响线程数 .
prefetchCount=10
使用 concurrentConsumers 创建多个使用者 - 每个使用者都有一个帖子 .
concurrentConsumers
auto ack意味着代理不需要确认(因此您可以丢失消息) . 如果监听器无法跟上,Spring AMQP还会阻止交付(预取计数) .
2 回答
预取计数:消费者应从队列中读取并保留多少消息,而不是一次选择一条消息 .
No-Ack:不要回复消费者已完成消费 .
这两者都用于微调您的设置
要解决问题的第二部分:如果将预取计数设置为10,则不会创建10个使用者,但您的单个使用者将一次获取10个消息 .
如果你创建10个消费者,它很可能会创建10个线程(或进程) . 这一切都取决于你如何配置它 . 很可能你会想要使用一个线程池
为spring-amqp专门回答这个问题 .
prefetchCount=10
表示经纪人为每个消费者提供最多10条未包装的消息;它不会影响线程数 .使用
concurrentConsumers
创建多个使用者 - 每个使用者都有一个帖子 .auto ack意味着代理不需要确认(因此您可以丢失消息) . 如果监听器无法跟上,Spring AMQP还会阻止交付(预取计数) .