0

我有一个生产者,一个队列和 N 个消费者。生产者创建由消费者执行的“工作”。我想使用拉模型,其中消费者从队列中拉出作业,当它完成前一个作业时,而不是使用循环的推送模型,其中作业被等于消费者。

我的消费者使用相同的代码,但是当我运行它时,第一个连接并接收所有工作。即使在调试中查看它,第一个得到所有信息,但第二个 etc 没有收到任何消息(即使它在第一个执行接收之前执行接收,这会返回一些作业)。

连接 URL:“amqp://guest:guest@prodconstest/?brokerlist='tcp://127.0.0.1:5767'”

每个消费者的代码都会:

  1. 创建 AMQConnection
  2. 使用自动确认创建队列会话
  3. 连接开始
  4. 创建队列"ADDR:" + queueName + "; {create: always, link:{x-subscribes: {exclusive: false}}}"
  5. 创造消费者

理论上是否可以使用 AMQP 队列来实现?如果是这样,怎么做?

4

1 回答 1

0

看来我必须更改maxprefetch连接 URL 中的参数。默认值 5000 对于我的用例来说太大了,将其更改为 1 可以使该系统正常工作。

于 2012-12-28T14:12:52.230 回答