Я пытаюсь опубликовать сообщения на RabbitMQ из сценария Ruby (используя Bunny ) и использовать их с сервера 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
Если я опубликую два сообщения вexchange, а затем запустите сервер 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