Ruby rails sidekiq后台进程
我在配置sidekiq服务器时遇到问题,当我刷新页面时,进程似乎正在前台运行/消费者/获取我需要将其永久放置在后台 用户控制器.rb message.rbRuby rails sidekiq后台进程,ruby,ruby-on-rails-3,background-process,sidekiq,Ruby,Ruby On Rails 3,Background Process,Sidekiq,我在配置sidekiq服务器时遇到问题,当我刷新页面时,进程似乎正在前台运行/消费者/获取我需要将其永久放置在后台 用户控制器.rb message.rb 我想你需要移动这个街区 @consumer.loop do |message| end 在您的worker内部,我认为消耗是在块执行之后完成的。Hassan,@consumer.loop是一个连续循环,实现是while(true){process mesesage}。我不知道这个过程是如何返回的事实上,现在我已经仔细研究了它,sidekiq
我想你需要移动这个街区
@consumer.loop do |message|
end
在您的worker内部,我认为消耗是在块执行之后完成的。Hassan,@consumer.loop是一个连续循环,实现是while(true){process mesesage}。我不知道这个过程是如何返回的事实上,现在我已经仔细研究了它,sidekiq不应该返回任何东西给你。此行:return@message=message.new(hash)if hash[“concern”]=“order\u create”或hash[“concern”]=“first\u payment”没有将控制权返回给调用方。
class ConsumerWorker
include Sidekiq::Worker
def perform(message)
payload = message.first["payload"]
hash = JSON.parse(payload)
return @message = Message.new(hash) if hash["concern"] == 'order_create' or hash["concern"] == 'first_payment'
end
end
class Message
attr_reader :bundle_id, :order_id, :order_number, :event
def initialize(message)
@payload = message["payload"]
@bundle_id = @payload["bundle_id"]
@order_id = @payload["order_id"]
@order_number = @payload["order_number"]
@event = message["concern"]
end
end
@consumer.loop do |message|
end