问题描述
我第一次尝试使用Rabbitmq和运动鞋。当我尝试雇用工人时,我面临一些问题。 我在application.rb
中添加了以下行 config.active_job.queue_adapter = :sneakers
当我运行rake --tasks时,运动鞋未列出
这是我的运动鞋.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。 Ruby版本-2.3.3。运动鞋版本-2.11.0
解决方法
您应该将 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