Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Sidekiq verarbeitet Warteschlange nicht

Der Grund war in unserem Fall:Sidekiq sucht möglicherweise nach der falschen Warteschlange. Standardmäßig verwendet Sidekiq eine Warteschlange namens „default“. Wir haben zwei verschiedene Warteschlangennamen verwendet und sie in config/sidekiq.yml

definiert
# configuration file for Sidekiq
:queues:
  - queue_name_1
  - queue_name_2

Das Problem ist, dass diese Konfigurationsdatei nicht automatisch geladen wird standardmäßig in Ihrer Entwicklungsumgebung (im Gegensatz zu database.yml oder thinking_sphinx.yml zum Beispiel) durch ein einfaches bundle exec sidekiq Befehl. Daher haben wir unsere Jobs in zwei bestimmte Warteschlangen geschrieben, und Sidekiq wartete auf Jobs in einer dritten Warteschlange (der Standardwarteschlange). Sie müssen den Pfad zur Konfigurationsdatei als Parameter über das -C übergeben oder --config Möglichkeit:

bundle exec sidekiq -C ./config/sidekiq.yml

oder Sie können die Queue-Namen direkt übergeben (hier sind keine Leerzeichen nach dem Komma erlaubt):

bundle exec sidekiq -q queue_name_1,queue_name_2

Um das Problem herauszufinden, ist es hilfreich, die Option -v zu übergeben oder --verbose auch auf der Kommandozeile oder mit :verbose: true in der sidekiq.yml Datei. Alles, was in einer Konfigurationsdatei definiert ist, ist natürlich nutzlos, wenn die Konfigurationsdatei nicht geladen ist. Stellen Sie daher zuerst sicher, dass Sie die richtige Konfigurationsdatei verwenden.