dav*_*ids 2 distributed ruby-on-rails sidekiq
我正在开发一个使用 Sidekiq 的 Rails 项目。我们的 Sidekiq 实现有两个 worker(WorkerA,读取 queue_a 和 WorkerB,读取 queue_b)。其中一个必须在 Rails 应用程序所在的同一服务器中执行,另一个必须在不同的服务器中执行。如何防止 WorkerB 在第一台服务器中执行,反之亦然?Sidekiq 进程可以配置为仅运行特定的工作人员吗?
编辑:Redis 服务器与 Rails 应用程序在同一台机器上。
使用特定于主机名的队列。配置/sidekiq.yml:
---
:verbose: false
:concurrency: 25
:queues:
- default
- <%= `hostname`.strip %>
Run Code Online (Sandbox Code Playgroud)
在你的工人中:
class ImageUploadProcessor
include Sidekiq::Worker
sidekiq_options queue: `hostname`.strip
def perform(filename)
# process image
end
end
Run Code Online (Sandbox Code Playgroud)
我的博客上有更多详细信息:
http://www.mikeperham.com/2013/11/13/advanced-sidekiq-host-specific-queues/
| 归档时间: |
|
| 查看次数: |
817 次 |
| 最近记录: |