我正在使用多个共享同一DB的heroku服务器。我希望每个服务器只处理创建延迟作业条目的服务器的延迟作业。
例如:
服务器A只处理队列"Server_A"
服务器A只处理队列"Server_b"
等等。。。
这可以通过使用延迟作业3来实现(https://github.com/collectiveidea/delayed_job)
然而,为了实现这一点,我需要为创建的每个延迟作业手动分配一个队列名称,这可能会很痛苦。(例如:object.delay(:queue=>‘tracking’).method)
相反,我希望能够为所有新作业分配一个"默认队列"。理想情况下,我把这样的东西放在一个delayed_job_config.rb&它起作用:
DEFAULT_QUEUE_NAME=ENV['APP_NAME']
这个想法是我对现有的延迟工作什么都不做&他们会自动分配一个与应用服务器名称相同的队列。
我正在寻找如何实现这一点的建议——或者,如果你想尝试一下,可以向我扔一些代码。
提前感谢!
在config/initializers/delayed_job.rb
中
Delayed::Worker.default_queue_name = `hostname`.chomp