Javascript RabbitMQ节点中无应答

Javascript RabbitMQ节点中无应答,javascript,node.js,coffeescript,rabbitmq,Javascript,Node.js,Coffeescript,Rabbitmq,我正在尝试使用RabbitMQ获取已传递和已处理消息的确认。不幸的是没有成功 看看我的简化代码: 服务器: 客户端: 服务器输出: Conn Ready Subscribed queueX { body: 'Hello CloudAMQP 1' } { body: 'Hello CloudAMQP 2' } Conn Ready Subscribed queueX Sending CloudAMQP 1 Sending CloudAMQP 2 Callback called for m

我正在尝试使用RabbitMQ获取已传递和已处理消息的确认。不幸的是没有成功

看看我的简化代码:

服务器:

客户端:

服务器输出:

Conn Ready
Subscribed queueX
{ body: 'Hello CloudAMQP 1' }
{ body: 'Hello CloudAMQP 2' }
Conn Ready
Subscribed queueX
Sending  CloudAMQP 1
Sending  CloudAMQP 2
Callback called for msg CloudAMQP 1. Delivered: false
Callback called for msg  CloudAMQP 2. Delivered: false
客户端输出:

Conn Ready
Subscribed queueX
{ body: 'Hello CloudAMQP 1' }
{ body: 'Hello CloudAMQP 2' }
Conn Ready
Subscribed queueX
Sending  CloudAMQP 1
Sending  CloudAMQP 2
Callback called for msg CloudAMQP 1. Delivered: false
Callback called for msg  CloudAMQP 2. Delivered: false

正如你所看到的,交付是错误的。知道这个代码有什么问题吗?

这是确认(确认)发布的方式

exchange.publish('', {body: 'your body'}, {}, function(err){
  if (err) return console.error(err);

  console.info('published');
}).addListener('ack', function() {
  console.info('ack received');
});

PS:我不使用coffeescript,所以,请原谅我发布了正常的javascript:),我很难转换,如果你在这方面有问题,我会尝试一下它

我很惊讶它不能正常工作。无论是否有客户,结果都是完全一样的。也许我不明白什么是可以证实的。我是否可以确认确实有人使用了我的邮件,或者我正在确认rabbit已将其排入队列?当您exchange.publish()时,您将确认您已成功将邮件发布到exchange,您不知道该邮件是否进入队列,有一个标志“立即”已被删除()还有一个“强制”标志,允许您重新路由未在队列中结束的消息,但决定如何处理消息不是发布者的工作。消息进入队列后,您可以在从队列中删除消息之前确认消息是否已成功使用。当您建立rmq时,您可以控制什么需要“永久”存在,什么不需要,您可以使exchange&queue持久,即使重新启动后也会创建这些消息。当您发布“新”消息时,队列可能很忙,并且正在处理其他任务,如果您等待它向您发送消息,这不是一种好的做法。出版商只需要知道他的消息是由交易所接收的,就这样,他完成了他的工作。也许在您的情况下,任何简单/小型发布/订阅解决方案都更好,您不需要rmq服务器。