Не запускать очередь по wisper-sidekiq

Я пытаюсь сделать небольшой пример с драгоценным камнем wisper-sidekiq. Очередь создана, но не запускается. Зачем? Я опишу шаги, которые вы делаете, я думаю, это будет проще. Я надеюсь на вашу помощь.

А. контроллер:

class BooksController < ApplicationController
def create
    service = CreateBook.new
    service.subscribe(ActivityListener, async: true)
    service.on(:reserver_item_successfull) { |book| redirect_to book_path(book.id) }
    service.on(:reserver_item_failed)      { |book| @book = Book.new(book_params); respond_with(@book) }
    service.execute(current_user, book_params)
end

Б. служба:

require 'wisper/sidekiq'
require 'sidekiq/api'

class CreateBook
  include Wisper::Publisher

  def execute(performer, attributes)
    book = Book.new(attributes)
    if book.valid?
      book.save
      broadcast(:reserver_item_successfull, performer, book)
    else
      broadcast(:book_failed, performer, book)
    end
  end
end

C. слушатель:

class ActivityListener
  def self.reserver_item_successfull(performer, book)
    puts performer.name.to_s + ", book: " + book.title.to_s
  end
end

Когда я сохраняю книгу, то, конечно, создаю очередь. Но:

  • sidekiq молчит (логи пусты, но очередь создана)
  • Redis тоже молчит

Может быть, я неправильно запускаю redis (redis-server) или sidekiq (bundle exec sidekiq)? Пожалуйста, помогите мне.

PS Попробуйте связать exec sidekiq -d -e production sidekiq -q по умолчанию -C config / sidekiq.yml, но не результат. Sidekiq.rb пусто.

2 ответа

Решение

Проблема решена. Я должен был запустить Sidekiq:

пакет exec sidekiq-r ./server.rb-L log/sidekiq.log также в server.rb

требовать 'sidekiq'

Sidekiq.configure_server do | config | config.redis = {url: 'redis: // localhost: 6379/0'} end

Sidekiq.configure_client do | config | config.redis = {url: 'redis: // localhost: 6379/0'} end

Я думаю, что вы можете исправить это с помощью следующих шагов:

  • require 'sidekiq/web' а потом, mount Sidekiq::Web => '/sidekiq'
  • идти к /sidekiq чтобы увидеть, есть ли рабочие / задачи / очереди
  • если нет
    • что-то может быть не так с вашим Redis
    • или твой код, поставь binding.pry там
  • если есть, должно быть что-то не так с вашим кодом, вставьте binding.pry там

Надеюсь, это поможет:-)

Другие вопросы по тегам