【问题标题】:Using multiple sidekiq databases使用多个 sidekiq 数据库
【发布时间】:2015-02-25 17:31:51
【问题描述】:

嘿,我正在尝试生成一个连接到完全独立的 Redis 数据库的 sidekiq 工作程序。我知道使用 3.0 的连接池这是可能的,并且我已经能够成功地将作业推送到正确的 Redis DB,但问题是 Sidekiq Web UI 没有在队列中显示这些作业(我已经安装了一个单独的专门指向其他 Redis DB 的机架应用程序)。管理界面中的“忙碌”选项卡还显示了我指向此数据库的 sidekiq 工作人员,以及正确的 PID。

这是我的 sidekiq.rb:

Sidekiq.configure_server do |config|
  if ENV['REDIS_DB'] == "2"
    config.redis = { :url => "redis://#{SIDEKIQ_HOST}:6379/2", :namespace => 'drip' }
  else
    config.redis = { :url => "redis://#{SIDEKIQ_HOST}:6379", :namespace => 'drip' }
  end
end

Sidekiq.configure_client do |config|
  if ENV['REDIS_DB'] == "2"
    config.redis = { :url => "redis://#{SIDEKIQ_HOST}:6379/2", :namespace => 'drip' }
  else
    config.redis = { :url => "redis://#{SIDEKIQ_HOST}:6379", :namespace => 'drip' }
  end
end

我的用例是我需要对进入第二个数据库的作业进行细粒度控制,因此我需要精确配置工作人员,以便他们只使用我需要的尽可能多的资源。我只希望以这种方式配置的工作人员接手这些工作。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 sidekiq


    【解决方案1】:

    Web UI 不能多次挂载以在单个进程中指向多个 Redis。您还必须设置 REDIS_DB 来运行多个 Web 进程。

    【讨论】:

    • 谢谢迈克,解决了我的问题。问题实际上是我正在创建的新 ConnectionPool 没有创建命名空间。一旦我在 ConnectionPool 块中指定了命名空间,一切都按预期工作。 +1 用于 sidekiq 中出色的内部代码文档,可以很容易地弄清楚这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-13
    • 2010-10-12
    • 2011-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多