同时在不同队列上创建消息

时间:2012-08-02 22:01:12

标签: php rabbitmq

我有一个脚本从队列中获取消息,这需要其他进程工作所需的预处理。

现在,这些消息必须传递,所以我需要确认这些消息,如果其中一个服务正在收听消息,那么它应该会收到它重新联机时错过的消息。

几个问题:

1 /为每次预处理运行时添加的每个后处理服务都有一个队列是否有意义? (因此,我可能会在每个流程后同时添加8个不同的队列 - 这将是大量的消息(数十万p /天)。

2 /将消息添加到队列的速度有多快?添加8到10个队列会减慢我的软件速度吗?

3 /我可以使用主题交换来进行扇出吗?我唯一担心的是,如果我的一项服务失败,他们会错过这条消息。

4 /有经验的人提示吗?

1 个答案:

答案 0 :(得分:1)

一些想法:

如果您的后处理器每个人都在做不同的“工作”,那么让队列供他们使用是有意义的。如果您只有一堆后处理器都在执行相同的任务,那么您只需要有一个队列,他们都可以从中消耗来自的消息。

向队列添加消息是快速的,向RabbitMQ添加队列很快,将队列绑定到交换很快。会降低系统速度的因素包括消息的大小和可能接收的数量,以及实际需要完成的处理量。

另一个考虑因素是消息的持久性,如果你的消息在重启RabbitMQ后仍然存在,也就是说,它们有多重要?如果关键是它们不会丢失(通过你的问题的声音),那么你需要确保它们是持久的。如果你查看RabbitMQ文档,你会发现这样做有很大的代价。

这取决于你的系统实际在做什么...... Topcis很好,Fanout很好,但你的系统做什么取决于哪个适用。

高度建议在行动中阅读RabbitMQ它是一个很好的资源,物超所值。