1

我是第一次尝试 Rabbitmq 和运动鞋。当我尝试运行我的工人时,我面临着一些问题。我在 application.rb 中添加了以下行

    config.active_job.queue_adapter = :sneakers

当我运行 rake --tasks 时,没有列出运动鞋

这是我的sneakers.rb 文件

     require 'sneakers'
     Sneakers.configure  connection: Bunny.new(
      addresses: 'localhost:5672',
      username: 'guest',
      password: 'guest',
      vhost: '/',
      logger: Rails.logger
     ),
     exchange: 'sneakers',
     exchange_type: :direct,
     workers: 1,
     env: ENV['RAILS_ENV'], 
     durable: true,
     ack: true,
     heartbeat: 30
    Sneakers.logger = Rails.logger
    Sneakers.logger.level = Logger::WARN

Rails 版本 - 4.2.4。红宝石版本 - 2.3.3。运动鞋版本 - 2.11.0

我被困在这里。任何解决方案或任何参考文档也会有所帮助。

4

1 回答 1

1

你应该添加require 'sneakers/tasks'到你的 Rakefile,一旦你这样做 rake -T 将显示运动鞋任务。要启动工人,您可以:

rake sneakers:run       # Start work (set $WORKERS=Klass1,Klass2)

我还遇到了一个奇怪的问题:sneaker rake 任务有时会出错并显示“没有找到工人”,不确定它是否是 Rails 自动加载问题,但解决方案是创建另一个你自己的 rake 任务,在其中实例化每个你的工人阶级,然后调用运动鞋:运行任务:

# lib/tasks/amqp.rake
desc "Run all of your sneakers tasks"
task :amqp => :environment do
  MyRandomWorker
  MyOtherSneakersWorker
  Rake::Task["sneakers:run"].invoke
end
于 2021-02-11T16:15:54.157 回答