首页 文章

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

提问于
浏览
2

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

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

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

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

以上哪项更有效

2 回答

  • 6

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

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

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

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

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

  • 3

    为spring-amqp专门回答这个问题 .

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

    使用 concurrentConsumers 创建多个使用者 - 每个使用者都有一个帖子 .

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

相关问题