问题描述
我设置了多个队列,以将不同类型的内存和时间密集型任务分配给工作人员。
虽然工作程序实例旨在侦听队列的不同子集,但每个工作程序一次只能消耗有限数量的消息(通常为 1),以防止它们耗尽内存。我们对具有并发性和预取计数的队列使用 SimpleMessageListenerContainer
,例如1.
问题是预取计数似乎是在通道上设置的,global
选项设置为 false
,所以它不是按通道应用,而是按消费者/队列({{3 }}).
因此,处理长时间运行任务的单个工作人员会在其侦听的每个队列上阻塞一条消息,而其他工作人员则空闲。
由于要求可以配置工作线程以更改任务类型的子集,因此我们无法将所有任务路由到单个队列或特定于工作线程的队列。
我找不到在消费者订阅之前更改频道上的 qos 设置的方法,因为一切都发生在 start
的 BlockingQueueConsumer
方法中。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)