在工作中,我们需要为发送电子邮件,构建PDF,处理一些数据等事情构建一个作业服务器。显然,我们希望建立一些通用的排队系统。我熟悉Gearman,这是它试图解决的确切问题:将工作放在工作人员来接他们的队列中。但是,我看到很多关于Rabbitmq的提及,我不清楚它在这种情况下是如何使用的。
Rabbitmq是构建分布式作业系统的好框架吗?
答案 0 :(得分:70)
我想说Gearman更适合排队“工作”,而RabbitMQ更适合排队“数据”。当然,它们都是同一个东西,但它对我的影响方式是,如果你试图“扇出”要完成的工作,并且工人可以独立工作,那么Gearman是更好的方法。 。但是,如果您尝试将来自大量数据源的数据提供给更少的数据消费者,那么RabbitMQ是更好的解决方案。
RabbitMQ的历史,作为允许Twitter收集大量消息的东西,并将它们馈送到只能保持一个连接打开的硬壳旧的SMS网关,速率有限,并且没有重试,是说明的那种RabbitMQ善于解决的问题。
答案 1 :(得分:30)
这完全取决于您要暴露的语义。在RabbitMQ之上完成Gearman所做的事情真的很容易,它可以向独立工作者“传播”消息。
但是Gearman是为了目的而建造的。 IIUC,Gearman是用于处理作业的框架,而不是消息系统。还有其他类似的框架,比如Celery,它使用了RabbitMQ。这是一个值得阅读的article about Celery。