我有一个Rails应用程序和一组NodeJS服务器。我使用那些NodeJS服务器使用PhantomJS解析URL。从我的Rails应用程序中我知道哪些NodeJS服务器已准备好接收要解析的URL,并且一旦解析,结果将异步发送回Rails服务器。
我的问题是,如果我需要Rails中的队列,那么需要解析的URL会排队,直到某些NodeJS服务器准备解析为止。所以,我的问题是:
Rails / Ruby 中的优秀优先级队列解决方案是什么,让我可以继续检查队列和NodeJS服务器的状态,并将作业从该队列发送到免费的NodeJS服务器。
之前我使用过Sidekiq,但我相信在这种情况下这不是必需的,因为Worker不会在这里做任何昂贵的工作,而只是从Rails队列委托给其中一个NodeJS服务器。
答案 0 :(得分:1)
例如,您可以将Redis与BLPOP一起使用。只需为每个优先级创建一个列表。让rails将URL推送到相应列表中以获得其优先级,阻塞弹出窗口等待显示作业。简单轻巧,redis应该得到两个平台的良好支持。
但实际上,您几乎可以将任何集中式存储调整为自动滚动优先级队列机制 - 例如,只要具有优先级和状态,您就可以在工厂RDBMS中轮询表格(准备好,运行,完成,错误等)您可以筛选和排序的列。并不是说我推荐使用大容量用例的解决方案,但这是可能的。