2012-11-19 3 views
11

私は現在、レールプラットフォームを構築しています。私は認証のためにdeviseを使用しました。そして、デフォルトの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を見てきましたが、彼は同じ問題を抱えているようでした。しかし、私はhostnameコマンドに問題があるとは思わない。

問題に関するご意見はありますか?

+0

尋ねるのは愚かかもしれませんが、 'bundle exec sidekiq -C config.yaml'またはそれに類似した別のワーカープロセスを実行しましたか? – number5

+0

私はそれがいつも起こっていると思うので、実際には尋ねるのは愚かではありません。私は実際に 'redis-server'を使ってredisを起動し、' bundle exec sidekiq'を使ってsidekiqを起動しました。事は私がsidekiqが働いていることを知っているということです。私は招待状のバックグラウンドプロセスでもメールを送っています。招待状とは別物です。 – Julius

+1

'bundle exec sidekiq -q mailer'を試してください私はdevise-asyncがメーラーキューを使うのがデフォルトではないと思います。 – number5

答えて

18

答えはやや単純です。 sidekiqにbundle exec sidekiq -q mailerを指定して、mailerキューを使用するようにsidekiqに指示するだけで済みます。そうすればメーラーのキューは処理され、オプションのsidekiqは単にdefaultキューに依存します。

+5

両方を行うには、 'bundle exec sidekiq -q mailer -q default'を使うだけです。これはまた、メーラー・キューをデフォルト・キューよりも優先させることに注意してください。 – crizCraig

+0

私は次回それを試してみるよ、ありがとう! – Julius

関連する問題