0

我有一个使用 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 个都被使用。为什么?为什么这不是一直有效?

4

1 回答 1

0

当您询问传入队列是否为空/非空时,我建议添加一些调试打印或类似结果。

于 2012-05-09T13:50:09.643 回答