Node.js RabbitMQ和节点amqp:确认模式下的Exchange未确认-为什么?
我正在编写一个依赖于RabbitMQ的Node.js应用程序。我使用节点amqp作为连接RabbitMQ的首选库 建立到RabbitMQ的连接后,我要做的第一件事是创建一个exchange:Node.js RabbitMQ和节点amqp:确认模式下的Exchange未确认-为什么?,node.js,rabbitmq,node-amqp,Node.js,Rabbitmq,Node Amqp,我正在编写一个依赖于RabbitMQ的Node.js应用程序。我使用节点amqp作为连接RabbitMQ的首选库 建立到RabbitMQ的连接后,我要做的第一件事是创建一个exchange: var options = { autoDelete: false, confirm: true, durable: true, type: 'direct' }; connection.exchange('myExchange', options, function (myExchange) { //
var options = { autoDelete: false, confirm: true, durable: true, type: 'direct' };
connection.exchange('myExchange', options, function (myExchange) {
// ...
});
这很好用。如您所见,我正在使用confirm:true
创建交换,因此我希望交换之后处于确认模式
现在,在我尝试发布消息时出现问题:
var options = {};
myExchange.publish('', { data: 'foobar' }, options, function () {
// ...
});
问题是,publish
函数的回调从未被调用——尽管消息已成功发布(正如我在RabbitMQ的web管理工具中看到的)
我是否以错误的方式理解确认模式?这是节点amqp的错误吗
任何帮助都将不胜感激:-)在适当的位置回答问题:npm上的节点amqp是一个旧版本。。。当前的解决方法是直接使用GitHub的
master
分支
这意味着,使用https://github.com/postwait/node-amqp/tarball/master
使用npm安装时
2013年11月更新 由于这些天我再次使用RabbitMQ(在我最初的问题提出一年后),我认为更新节点amqp的现状可能是一个好主意
不幸的是,节点amqp的状态与一年前完全相同:npm发布的版本几乎不可用。我在一年前遇到的一些bug仍然存在(包括我问题中的bug),因此给出的解决方法仍然有效:从GitHub获取最新的主程序。这似乎在node amqp版本0.2.0中得到了修复。已发布的npm版本适合我。