我已经构建了一个应用程序,它由一个发布者、几个队列和每个队列的几个消费者组成。队列(包括队列)上的消费者共享通道。其他队列使用不同的通道。我观察到,对于不同的队列,任务正在并行处理,但对于特定队列,这并没有发生。如果我一次将多条消息发布到特定队列,则只有一个消费者工作,而其他消费者则等到工作结束。我应该怎么做才能让消费者并行工作?
workers.each do |worker|
worker.on_delivery() do |delivery_info, metadata, payload|
perform_work(delivery_info, metadata, payload)
end
queue.subscribe_with(worker)
end
这就是我为特定队列注册所有消费者的方式。该操作perform_work(_,_,_)
相当昂贵,需要几秒钟才能完成。