我有一个使用 AMQP 的后台作业处理系统。多个服务器正在使用同一队列中的作业。这些服务器中的每一个都运行 4 个工作进程。到目前为止,一切都很好。
现在要处理的作业本身需要一些 IPC,为了保持一致,我再次使用 AMQP 队列(当然不同的队列)。这个想法是每个工人都将拥有它的 IPC 对应物,如下所示:
/ IPC queue \
Main queue ---> * W1 / \ W1-counterpart
> * W2 / \ W2-counterpart
> * W3 / \ W3-counterpart
> * W4 / \ W4-counterpart
\ IPC Result queue /
对方可以独立操作,所以如果W3-counterpart 为W1 处理工作就可以了。我注意到,问题是该系统似乎并没有一直被充分利用。即使主队列充满了作业,似乎也只有 2 个被同时处理,在不同的时刻,所有 4 个都被使用。为什么?为什么这不是一直有效?