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