我在研究sidekiq异步发送邮件的过程中,遇到了sidekiq无法执行队列中的任务的情况.
明明sidekiq的”已进入队列”已经包含了发送邮件的任务,并且我非常确定发送邮件的程序是没有问题的.
但是无论怎么尝试,邮件都发送不出去.
rails console中看到的入队信息是这样的
1 | 1).deliver_later OrderMailer.confirm_email( |
这里很明确的指出队列的名称是 development_mailers
在我没有查明原因之前我的sidekiq.yml配置项是这样的
1 | :concurrency: 5 |
因为对sidekiq研究不透,当时并没有注意 :queues 这块的含义.
在反复google后终于在这篇教程里找到了问题的原因所在.
其中有这样一句话,让我恍然大悟:
“!!! important. You may need to include new queue names in sidekiq.yml file:”
我了个大艹!
原来是我没有把 development_mailers 队列加到可执行队列中去.
添加后的sidekiq.yml配置项是这样的
1 | :concurrency: 5 |
重启sidekiq后,世界美好了!
ps:
1 | :queues: |
这块的含义是sidekiq可以执行的队列集合,其中 [myqueue, 2] 这里的2 表示被分配到的权重是2.
可参考这里