如何解决Spring AMQP Rabbit:全局预取计数
我设置了多个队列,以将不同类型的内存和时间密集型任务分配给工作人员。
虽然工作程序实例旨在侦听队列的不同子集,但每个工作程序一次只能消耗有限数量的消息(通常为 1),以防止它们耗尽内存。我们对具有并发性和预取计数的队列使用 SimpleMessageListenerContainer
,例如1.
问题是预取计数似乎是在通道上设置的,global
选项设置为 false
,所以它不是按通道应用,而是按消费者/队列({{3 }}).
因此,处理长时间运行任务的单个工作人员会在其侦听的每个队列上阻塞一条消息,而其他工作人员则空闲。
由于要求可以配置工作线程以更改任务类型的子集,因此我们无法将所有任务路由到单个队列或特定于工作线程的队列。
我找不到在消费者订阅之前更改频道上的 qos 设置的方法,因为一切都发生在 start
的 BlockingQueueConsumer
方法中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。