我已经从队列中拾取消息的脚本,这并利用于其它处理所需的预处理工作同时创建消息。上不同的队列
现在,这些消息都被传递,所以我需要确认这些消息,如果监听消息服务的一个出现故障那么当它重新联机应该接受它错过了消息。
几个问题:
1 /是否有意义有被添加到每次预处理运行的每个处理后的服务队列? (所以我可能会在每个进程之后同时添加8个不同的队列 - 这将会产生大量的消息(数十万数据/天)。
2 /将消息添加到队列的速度有多快?添加到8-10队列将减慢我的软件?
3 /我可以使用话题交换来做到这一点fanout?我唯一担心的是,如果我的其中一个服务失败,他们会错过消息。
4 /从有经验的人有什么建议
嗨@kzhen感谢您的答复,我的后处理器都做不同的工作,你是正确的。我的预处理脚本将在需要工作的数据库中记录ID到队列中,这是我需要的持久性和耐久性。我的问题更多的是从整洁的角度来看 - 必须同时向10个队列发布完全相同的消息似乎是一种耻辱。似乎不可能将多个队列绑定到一个通道,然后发布到所有队列获取消息的通道(似乎发布需要队列名称?) – williamvicary 2012-08-03 08:05:22
@williamvicary与RabbitMQ一起发布到交换中。所以,随着你的整洁点,你将发布到交换中,交换将把你的消息转发到绑定它的队列中。至于你关于频道绑定的问题,这也不应该适用(也许你可以发布你的一些代码),因为你将绑定你的频道到交换机,就像$ channel-> exchange.declare('exchange-name' ,'交换型',...)然后使用$ channel-> basic_publish('message','routingKey') – kzhen 2012-08-03 08:33:34
看看这里的PHP例子,看看“new_task.php”他们没有利用交换https://github.com/rabbitmq /rabbitmq-tutorials/blob/master/php/new_task.php所以你说如果我声明一个交换,然后在我没有队列发布的时候声明一些队列交换将发送消息到所有队列绑定在那届会议上呢? – williamvicary 2012-08-03 08:49:29