2012-11-19 19 views
11

我目前正在構建一個rails平臺,並且我使用devise進行身份驗證,現在想要將默認設計電子郵件移動到後臺進程使用sidekiq。我使用的設計,異步這個,也做了以下內容:通過sidekiq和devise-async發送後臺郵件,隊列已滿,但郵件未處理

新增的devise_async.rb文件:

#config/initializers/devise_async.rb 
Devise::Async.backend = :sidekiq 

增加異步命令到色器件模型:

#user.rb 
devise :database_authenticatable, :asynC#etc. 

的版本的寶石如下:

Devise 2.1.2 
Devise-async 0.4.0 
Sidekiq 2.5.3 

我遇到的問題是電子郵件傳遞sidekiq隊列,但工作人員從不執行發送電子郵件。我也看過devise async not working with sidekiq,他似乎也有同樣的問題。但我不認爲我的主機名命令有問題。

對這個問題有什麼想法?

+0

問這可能很愚蠢,但是你有一個獨立的工作進程,通過'bundle exec sidekiq -C config.yaml'或類似的東西運行嗎? – number5

+0

問這其實並不愚蠢,因爲我認爲這種事情總是發生。我實際上使用'redis-server'啓動了redis,然後使用'bundle exec sidekiq'啓動了sidekiq。事情是,我知道sidekiq正在工作,因爲我也發送郵件在後臺進程邀請,這是獨立於設計。 – Julius

+1

嘗試'捆綁執行exec sidekiq -q mailer'我認爲設計 - 異步使用郵件隊列不是默認的。 – number5

回答

18

答案很簡單。您只需告訴sidekiq使用mailer隊列,通過與bundle exec sidekiq -q mailer開始sidekiq。這樣,郵件隊列將被處理,沒有選項sidekiq將簡單地依賴於default隊列。

+5

要做到這一點,你可以使用'bundle exec sidekiq -q mailer -q default'注意這也會使郵件程序優先於默認隊列。 – crizCraig

+0

我下次試試,謝謝! – Julius