人们使用Rails应用程序的消息队列是什么,决定选择它的驱动力是什么.最新的Twitter宣传其内部队列Starling是否会影响任何现有的设计决策.
我正在开发一个需要一个消息队列来处理一些后台任务的应用程序,我没有做太多这样的事情,我过去看过的大部分内容都是关于Starling和Workling,说实话应用程序不是很大,这个解决方案可能就足够了,但我很乐意获得集成最佳解决方案的经验,因为我确信我会在某个时候将其集成到更大的应用程序中.
你会为Rails应用建议什么消息队列?
编辑:感谢您的建议,我将在本周末看看他们中的一些.
再次编辑:我已经环顾四周,有点不知所措.然而,我将把RabbitMQ与Workling集成到我正在构建的应用程序中,然后如果我需要一些关于快速队列的知识,那么我将拥有它并知道它是否符合我的需求.
编辑:发现越来越多的DJ适合我,如果我在网站上"长大",我会说Resque是我要去的地方.
编辑:(2014年12月)所以自从我问这个问题已经有很长一段时间了,但我看到它仍然得到一些观点或一些投票,所以当我选择背景工作者时,我想我会更新它的方法.
在我看来,目前在Ruby中运行后台作业的最佳方法是使用Sidekiq.很多人真的称赞Sidekiq是因为它是线程化的工作者,而不是每个工人的处理能够使用比Reski更少的内存,而Resque就是我在Sidekiq之前使用的.这很好,但对我来说,这不是杀手级的功能.通过使用Sidetiq与Sidekiq,作业调度是如此微不足道,我切换,从来没有把目光从它背面,我已经使用并取得了Sidekiq一件轻而易举的使用作业迄今为止最容易调度.
作为更新--GitHub已经转移到Redis上的Resque而不是Delayed job.但是,对于较小的设置,他们仍然建议使用delayed_job:
https://github.com/resque/resque
来自github的Chris Wanstrath最近参加了SF Ruby聚会,讨论了他们的队列.在确定Shopify的delayed_job之前,他们尝试过Starling,beanstalk和其他一些变体.他们使用背景非常积极.
这是去年发表的关于他们转向DJ 的博客文章.
现在我在几年前推出了自己的产品,但是我从DJ那里得到一些改进处理的想法.
如果您不期望任何重负荷,我会建议延迟工作作为一个简单的解决方案.优点:易于设置,易于监控,代码简单,没有任何外部依赖性.以前我们使用ActiveMessaging(使用ActiveMQ和stomp),但这对我们的项目来说太过分了,所以我们为了简单起见切换到delayed_job.
无论如何,如果你需要非常成熟和快速的解决方案,ActiveMQ是一个非常好的选择.如果你不想花太多时间来维护你真正不需要的全面消息排队解决方案,那么delayed_job是一种可行的方法.这是一篇关于Scribd ActiveMQ体验的好文章.