当我发布到默认交易所时,我似乎无法得到确认。我目前正在使用this post建议的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.');
});
});
我认为默认交换是一个空字符串的直接交换(所有其他选项都是默认的)。根据{{3}},如果confirm选项为true,它将调用提供的回调。我试图自己创建交换,但也没有运气。
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.');
});
});
});
我可以使用RabbitMQ网站上的exchange.publish method确认我已成功发布消息。
默认交换是否在publish方法中发出ack消息?我不正确地打电话了吗?
答案 0 :(得分:0)
类似的东西:
connection.queue("test_queue", function(q) {
q.bind(exchange, function() {
exchange.publish(...);
}
});
这将使您的消息进入新交换的指定队列,并进行回调。如果你像我一样并且没有正确阅读文档,那么来自publish的回调将发送false表示成功(即errorHasOccured是回调的第一个参数)。