Rabbitmq或Gearman - 选择一个工作队列

时间:2010-02-17 19:58:57

标签: message-queue rabbitmq celery gearman

在工作中,我们需要为发送电子邮件,构建PDF,处理一些数据等事情构建一个作业服务器。显然,我们希望建立一些通用的排队系统。我熟悉Gearman,这是它试图解决的确切问题:将工作放在工作人员来接他们的队列中。但是,我看到很多关于Rabbitmq的提及,我不清楚它在这种情况下是如何使用的。

Rabbitmq是构建分布式作业系统的好框架吗?

2 个答案:

答案 0 :(得分:70)

我想说Gearman更适合排队“工作”,而RabbitMQ更适合排队“数据”。当然,它们都是同一个东西,但它对我的影响方式是,如果你试图“扇出”要完成的工作,并且工人可以独立工作,那么Gearman是更好的方法。 。但是,如果您尝试将来自大量数据源的数据提供给更少的数据消费者,那么RabbitMQ是更好的解决方案。

RabbitMQ的历史,作为允许Twitter收集大量消息的东西,并将它们馈送到只能保持一个连接打开的硬壳旧的SMS网关,速率有限,并且没有重试,是说明的那种RabbitMQ善于解决的问题。

答案 1 :(得分:30)

这完全取决于您要暴露的语义。在RabbitMQ之上完成Gearman所做的事情真的很容易,它可以向独立工作者“传播”消息。

但是Gearman是为了目的而建造的。 IIUC,Gearman是用于处理作业框架,而不是消息系统。还有其他类似的框架,比如Celery,它使用了RabbitMQ。这是一个值得阅读的article about Celery