require “bunny” require “json” namespace :rabbitmq do
desc "create some fake data" task :consumer => :environment do consumer = ENV["name"] || "generic" $consumer_config = YAML.load("#{Rails.app}/config/consumer_config.yml") conn = Bunny.new conn.start channel = conn.create_channel exchange = channel.topic($consumer_config[consumer]["self_exchange"]) queue = channel.queue($consumer_config[consumer]["queue"], :exclusive => true) queue.bind(exchange, :routing_key => $consumer_config[consumer]["routing_key"]) begin queue.subscribe(:block => true) do |delivery_info, properties, body| #parse msg and invoke method params = JSON.parse(body) async_service = Rabbitmq::Async::Service.new(params) async_service.perform() end rescue Interrupt => _ channel.close conn.close end end
end