Кажется, я не могу получить подтверждение, когда я публикую для обмена по умолчанию. В настоящее время я использую основную ветвь node-amqp, предложенную this post.RabbitMQ & node-amqp - обмен по умолчанию не подтвержден
Код:
var amqp = require('amqp');
var conn = amqp.createConnection({ host: 'localhost' });
conn.once('ready', function() {
conn.publish('test_queue', 'test message', { /* empty options */ }, function (a, b) {
console.log('Publish complete.');
});
});
Я считаю, что обмен по умолчанию является прямым обменом с пустой строкой (все остальные параметры по умолчанию). Согласно exchange.publish method, если опция подтверждения верна, она будет вызывать обратный вызов. Я попытался создать обмен самостоятельно, но не повезло и там.
var amqp = require('amqp');
var conn = amqp.createConnection({ host: 'localhost' });
conn.once('ready', function() {
conn.exchange('', { confirm: true }, function (exchange) {
exchange.publish('test_queue', 'test message', { /* empty options */ }, function (a, b) {
console.log('Publish complete.');
});
});
});
Я могу подтвердить, что я успешно публиковать сообщения, используя в basic python receive script с сайта RabbitMQ.
Включает ли обмен по умолчанию сообщение ack в методе публикации? Я называю это неправильно?
Я не уверен на 100%, но я думаю, что это не относится к обмену по умолчанию (очереди привязаны к нему по умолчанию). Когда я пытаюсь сделать это, я получаю ошибку 403 ", которая не разрешена при ошибке обмена по умолчанию". –
Да, дело в том, что вам нужно создать другой обмен, поскольку по умолчанию не подтверждается, что сообщение было успешно опубликовано. –