Node.js 拉比特公司;节点amqp-默认交换不';不确定
当我发布到默认exchange时,我似乎无法得到确认。我目前正在使用由建议的节点amqp的主分支 代码: 我相信默认的交换是带有空字符串的直接交换(所有其他选项都是默认的)。根据,如果确认选项为true,它将调用提供的回调。我试图自己创建交换,但也没有运气Node.js 拉比特公司;节点amqp-默认交换不';不确定,node.js,rabbitmq,node-amqp,Node.js,Rabbitmq,Node Amqp,当我发布到默认exchange时,我似乎无法得到确认。我目前正在使用由建议的节点amqp的主分支 代码: 我相信默认的交换是带有空字符串的直接交换(所有其他选项都是默认的)。根据,如果确认选项为true,它将调用提供的回调。我试图自己创建交换,但也没有运气 var amqp = require('amqp'); var conn = amqp.createConnection({ host: 'localhost' }); conn.once('ready', function () {
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是否在发布方法中发出确认消息?我打错电话了吗
connection.queue("test_queue", function(q) {
q.bind(exchange, function() {
exchange.publish(...);
}
});
这将使您的邮件与新exchange一起进入指定队列,并进行回调。如果您和我一样,没有正确阅读文档,则publish的回调不会发送false以表示成功(即ErrorHasOccursed是回调的第一个参数)。我不是100%确定,但我认为这不适用于默认exchange(默认情况下队列绑定到它)。当我尝试这样做时,会出现403“默认exchange上不允许操作”错误。是的,问题是您需要创建一个不同的exchange,因为默认exchange不会确认消息已成功发布。
connection.queue("test_queue", function(q) {
q.bind(exchange, function() {
exchange.publish(...);
}
});