我正在使用共享相同数据库的多个heroku服务器。我想让每个服务器只处理创建延迟作业条目的服务器的延迟作业。
例如:
服务器A只处理队列“server_a”
服务器A只处理队列“server_b”
等...
使用延迟作业3(https://github.com/collectiveidea/delayed_job)可以实现此目的
然而,为了实现这个目的,我需要为每个创建的延迟作业手动分配队列名称,这可能很痛苦。 (例如:object.delay(:queue =>'tracking')。方法)
相反,我希望能够为所有新作业分配“默认队列”。理想情况下,我把这样的东西放在delayed_job_config.rb&它有效:
DEFAULT_QUEUE_NAME = ENV ['APP_NAME']
......这个想法是我对现有的延迟工作没有做任何事情。它们会自动分配一个与应用服务器同名的队列。
我正在寻找有关如何实现这一目标的建议 - 或者如果你想给它一个刺,请按我的方式抛出一些代码。
提前致谢!
答案 0 :(得分:5)
在config/initializers/delayed_job.rb
Delayed::Worker.default_queue_name = `hostname`.chomp