Rails 3.2.9
Ruby 1.9.3dev (2011-09-23 revision 33323) [i686-linux]
sidekiq 2.10.1
如果我定義了一個工人象下面這樣一個自定義隊列名稱Sidekiq工人被分配到「默認」隊列
class BulkEmailWorker
include Sidekiq::Worker
# https://github.com/mperham/sidekiq/wiki/Advanced-Options
sidekiq_options(queue: :bulk_mails, backtrace: true)
# https://github.com/mperham/sidekiq/wiki/Best-Practices
# Section: Make your jobs small and simple
def perform
# https://github.com/mperham/sidekiq/wiki/Delayed-Extensions
scheduled_mails = MailTemplate.with_schedule
scheduled_mails.each do |mail_template|
BulkMailer.delay.general_mail(mail_template.id)
end
end
end
,我調用工人是這樣的:
BulkEmailWorker.perform_async
它不起作用(換句話說不發送電子郵件)。
檢查在redis的數據,我發現以下:
redis 127.0.0.1:6379> keys *
1) "myapp:stat:processed:2013-04-24"
2) "myapp:queue:default"
3) "myapp:stat:processed"
4) "myapp:queues"
redis 127.0.0.1:6379> lrange myapp:queue:default -100 100
1) "{\"retry\":true,\"queue\":\"default\",\"timeout\":30,\"class\":\"Sidekiq::Extensions::DelayedMailer\",\"args\":[\"---\\n- !ruby/class 'BulkMailer'\\n- :general_mail\\n- - 1\\n\"],\"jid\":\"e46693944febf7ae26ec67a0\"}"
redis的127.0.0.1:6379>
如工人上面可以看到被分配到隊列「默認」和我想由於對此工人無法處理。
我開始sidekiq使用以下命令爲上述方案:
bundle exec sidekiq -e dev_mysql -C config/sidekiq.yml -q bulk_mails
然而,當我從我的工人下列
sidekiq_options(queue: :bulk_mails, backtrace: true)
刪除,並開始sidekiq使用以下命令:
bundle exec sidekiq -e dev_mysql -C config/sidekiq.yml
它的工作原理(換句話說,它發送成功的電子郵件)。
/config/sidekiq.yml
# https://github.com/mperham/sidekiq/wiki/Logging
# http://stackoverflow.com/questions/15260634/sidekiq-configuration-for-multiple-environments
---
:verbose: true
:pidfile: ./tmp/pids/sidekiq.pid
:logfile: ./log/sidekiq.log
:concurrency: 25
我一直在使用Sidekiq剛剛開始,我新手it.So請原諒,如果我有一些概念,我誤解或不瞭解有關。
我需要擺脫上述問題,以便我的工作人員被分配到所需的隊列,並且也成功處理。
感謝, Jignesh
感謝zwippie您的回覆。我剛剛收到來自@mperham的評論,網址是https://github.com/mperham/sidekiq/issues/872。 – 2013-04-25 19:12:02