Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js RabbitMQ和节点amqp:确认模式下的Exchange未确认-为什么?_Node.js_Rabbitmq_Node Amqp - Fatal编程技术网

Node.js RabbitMQ和节点amqp:确认模式下的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) { //

我正在编写一个依赖于RabbitMQ的Node.js应用程序。我使用节点amqp作为连接RabbitMQ的首选库

建立到RabbitMQ的连接后,我要做的第一件事是创建一个exchange:

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版本适合我。