2012-11-19 5 views
11

Ich baue derzeit eine Rails-Plattform und ich habe Gerät zur Authentifizierung verwendet und möchte nun die Standard-Devise-E-Mails in einen Hintergrundprozess verschieben mit sidekiq. Ich verwende dafür ersinnen-Asynchron und haben folgendes getan:Hintergrund Mailing durch sidekiq und devise-async, Warteschlange füllt sich, aber Mails werden nicht verarbeitet

Added die devise_async.rb Datei:

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

Added die Asynchron-Befehl an die devise Modell:

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

Die Versionen der Edelsteine ​​sind die folgenden:

Devise 2.1.2 
Devise-async 0.4.0 
Sidekiq 2.5.3 

Das Problem, das ich habe, ist, dass die E-Mails weitergeleitet werden die Sidekiq-Warteschlange, aber die Arbeiter führen niemals die E-Mails aus. Ich habe auch devise async not working with sidekiq angesehen und er schien das gleiche Problem zu haben. Aber ich glaube nicht, dass ich ein Problem mit dem Befehl hostname habe.

Haben Sie irgendwelche Gedanken zu diesem Thema?

+0

Es mag dumm sein zu fragen, aber hatten Sie einen separaten Worker-Prozess, der über 'bundle exec sidekiq -C config.yaml' oder etwas Ähnliches lief? – number5

+0

Es ist eigentlich nicht dumm zu fragen, da ich denke, dass sowas die ganze Zeit passiert. Ich habe tatsächlich mit redis-server und dann sidekiq mit 'bundle exec sidekiq' begonnen. Die Sache ist, dass ich weiß, dass sidekiq funktioniert, da ich auch E-Mails in einem Hintergrundprozess für Einladungen sende, der von der Erfindung getrennt ist. – Julius

+1

Versuchen Sie 'Bündel exec sidekiq-q mailer 'Ich denke, dass die asise-async Verwendung Mailer-Warteschlange nicht Standard ist. – number5

Antwort

18

Die Antwort ist ziemlich einfach. Sie müssen sidekiq nur mitteilen, dass die mailer-Warteschlange verwendet werden soll, indem sidekiq mit bundle exec sidekiq -q mailer gestartet wird. Auf diese Weise wird die Mailer-Warteschlange verarbeitet, ohne die Option sidekiq wird sich einfach auf die default-Warteschlange verlassen.

+5

Um beides zu tun, können Sie einfach 'bundle exec sidekiq -q mailer -q default' verwenden. Beachten Sie, dass auch die Mailer-Warteschlange über die Standardwarteschlange priorisiert wird. – crizCraig

+0

Ich werde es beim nächsten Mal versuchen, danke! – Julius

Verwandte Themen