【发布时间】:2014-12-30 00:53:55
【问题描述】:
我目前正在尝试使用 RabbitMQ(具有出色的 RabbitMQBundle )来处理大量异步工作。
目标是让一个队列发布相同类型的消息,并让 X 个工作人员在多台服务器上同时查看消息。
每个工作人员必须查看一条消息,完成工作,然后查看另一条消息等。
这是我的会议:
old_sound_rabbit_mq:
connections:
default:
host: 'localhost'
port: 5672
user: 'myuser'
password: 'mypassword'
vhost: '/'
lazy: false
producers:
generate_report:
connection: default
exchange_options: { name: 'gen_report', type: fanout }
consumers:
generate_report:
connection: default
exchange_options: { name: 'gen_report', type: fanout }
queue_options: { name: 'gen_report' }
callback: generator.report.consumer
在我的消费者中,我在日志文件中有一个条目,并且睡眠时间为 120 秒。
我启动了 php app/console rabbitmq:consumer generate_report 10 次,但是当我查看我的日志文件时,我只有每 120 条消息,而目标是拥有 10 条!
我也尝试将我的队列设置为主题或直接获得相同的结果。
我不明白我做错了什么:'(
提前致谢
亲切的问候
【问题讨论】:
-
您能否进一步解释问题。我不明白你有什么和你想要什么?
-
我想让例如 2 个工作人员使用同一个队列同时生成我的报告。目前,当我启动 2 个工人时,只有一个(第一个)在工作。第二个什么都不做,除非我关闭第一个
-
啊哈,现在我明白了。工人们似乎把对方锁在了门外。你知道他们可以竞争什么样的资源吗?输出文件可以(并且应该)有文件锁,数据库表(对于 MyISAM)和行(对于 InnoDB)有锁。这是第一个工人做的事情,阻止了第二个工人做任何事情
-
Waht 要将预取计数设置为 1 吗?