2

我正在研究rabbitmq并尝试将方法从我的ruby on rails应用程序推送到队列,并且我正在运行服务器端ruby脚本来读取队列并执行在有效负载中发送的方法。这是我的客户端代码。

module Rabbitesh
  require 'amqp'
  #debugger
  def self.call_rabbits(payload,queue_name)
    AMQP.start(:host => "localhost") do |connection|
      channel = AMQP::Channel.new(connection)
      queue = channel.queue(queue_name)
      channel.default_exchange.publish(payload, :routing_key => queue.name)
      #EM.add_timer(0.01) do
        connection.close do

        #end
      end
    end
  end

end 

这就是我现在调用的 Rabbitmq 函数

Rabbitesh::call_rabbits(obj,"welcome_mail")

其中“welcome_mail”是 queue_name

这是服务器端脚本

require 'rubygems'
require 'amqp'
require 'daemons'

options = { :backtrace => true, :dir => '.', :log_output => true}

Daemons.run_proc('raabbitmq_daemon',options) do
  AMQP.start(:host => "localhost") do |connection|
    channel = AMQP::Channel.new(connection)
    queue = channel.queue("welcome_mail")

    Signal.trap("INT") do
      connection.close do
        EM.stop { exit }
      end
    end

    puts " [*] Waiting for messages. To exit press CTRL+C"

    queue.subscribe do |body|
      UserMailers.welcome_organic(body).deliver
    end
  end
end

问题是当我的 rails 应用程序调用 rabbitmq 函数时,控制台会停在那里说“更新客户端属性”,虽然我将运行我的服务器端 ruby​​ 脚本,但它不会读取队列并执行该过程。我无法理解代码有什么问题,请帮助我。

4

0 回答 0