RabbitMQ / AMQP未处理的通道错误 - NOT_FOUND

时间:2010-07-22 08:15:46

标签: ruby node.js rabbitmq amqp

我正在尝试从Ruby脚本(使用Bunny)向RabbitMQ发布消息,并从node.js服务器(使用node-amqp)使用它们。

第一条消息成功到达,但随后在node.js内记录错误,连接关闭,没有收到更多消息:

mu:charlie-node tom$ node charlie.js 
22 Jul 09:11:04 - Running in development environment.
22 Jul 09:11:04 - Connected to AMQP.
22 Jul 09:11:04 - {"build_id":1234}
Unhandled channel error: NOT_FOUND - unknown delivery tag 1

如果我将两条消息发布到交换机中,然后运行node.js服务器,我可以看到它们都在记录错误之前到达,这表明RabbitMQ正在关闭交换机或队列时它是空的。但是,因为我将autoDelete设置为false,所以不应该这两个。

有什么建议吗?

我的node.js脚本如下所示:

var amqpConnection = amqp.createConnection({ host: config.rabbitmq.host });

amqpConnection.addListener('ready', function() {
  sys.log("Connected to AMQP.");

  var exchange = amqpConnection.exchange('job_exchange', {
    type : 'topic',
    passive : false,
    durable : true, 
    autoDelete : false
  })

  exchange.addListener('open', function() {

    var queue = amqpConnection.queue('arthr_queue', {
      passive : false,
      autoDelete : false,
      durable : true,
      exclusive : false
    });

    queue.bind(exchange, '#');

    queue.subscribe(function(message) {
      sys.log(message.data.toString());
    });
  });
});

我的Ruby脚本看起来像:

require 'rubygems'
require 'bunny'
require 'json'

b = Bunny.new(:logging => true)

b.start

job_exchange = b.exchange('job_exchange', 
  :type => :topic, 
  :durable => true, 
  :auto_delete => false, 
  :passive => false
)

message = {
  :build_id => 1234
}

job_exchange.publish(message.to_json, :key => 'arthr.rebuild')

b.stop

1 个答案:

答案 0 :(得分:1)