我有一个 生产环境 者,一个队列和N个消费者 . 制片人创造由消费者执行的“工作” . 我想使用拉模型,其中消费者从队列中拉出作业,当它完成前一个作业时,不推动循环模型,其中作业被等于消费者 .
我的消费者使用相同的代码,但是当我运行它时,第一个连接并接收所有作业 . 即使在调试中查看它,第一个获取所有内容,但第二个等不会获得任何消息(即使它在第一个执行接收之前执行接收,它返回一些作业) .
连接URL:“amqp:// guest:guest @ prodconstest /?brokerlist ='tcp://127.0.0.1:5767'”
每个消费者的代码都有:
-
创建AMQConnection
-
使用auto ack创建队列会话
-
连接开始
-
创建队列
"ADDR:" + queueName + "; {create: always, link:{x-subscribes: {exclusive: false}}}"
-
创造消费者
从理论上讲,使用AMQP队列是否可行?如果是这样,怎么样?
1 回答
看来我必须在连接URL中更改
maxprefetch
参数 . 默认值5000对于我的用例来说太大了,将其更改为1会使该系统工作 .