RabbitMQ Durable Queue ACK не работает в узле
Я изучаю интеграцию RabbitMQ с Node и пишу POC для проверки подписки с длительной очередью.
Хотя я установил autoAck: true в consumer.js, но он все равно получает старые сообщения всякий раз, когда я выполняю этот файл js.
Могу ли я знать, почему мой consumer.js все еще получает старые сообщения из Queue, несмотря на признание истины?
В RabbitMQ я настроил следующее.
- Обмен: rabbitmq.direct прямого типа
- Очередь: data.queue
- Прочный: правда
- Обязательный ключ маршрутизации: информация
мой публиковать node.js
var amqp = require('amqplib/callback_api');
var jsonEventMsg = require('user.json');
amqp.connect('amqp://test:test123@ipnumber:port/', function(err, conn)
{
conn.createChannel((err, ch) =>
{
const ex = "rabbitmq.direct";
const severity = 'info';
ch.assertExchange(ex, 'direct', {durable: true});
ch.publish(ex, severity, new Buffer(JSON.stringify(jsonEventMsg)));
console.log(" [x] Sent %s: '%s'", severity, JSON.stringify(jsonEventMsg));
});
setTimeout(
function()
{
conn.close();
process.exit(0)
},
500
);
}
);
моя подписка node.js
var amqp = require('amqplib/callback_api');
amqp.connect('amqp://test:test123@ipnumber:port/', function(err, conn)
{
conn.createChannel((err, ch) =>
{
const ex = "direct.exchange";
const queue = "data.queue";
ch.assertExchange(ex, 'direct', {durable: true});
ch.assertQueue(queue, { exclusive: false }, (err, q) =>
{
console.log("[*] Waiting for messages in %s. To exit press CTRL+C");
ch.bindQueue(q.queue, ex, "info");
ch.consume(q.queue, function(msg)
{
console.log(" [x] %s: '%s'", msg.fields.routingKey, msg.content.toString());
},
{autoAck: true , exclusive: false }
);
});
});
});