Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.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
Rabbitmq 如何判断哪条amqp消息不是从basic.return响应路由的?_Rabbitmq_Amqp - Fatal编程技术网

Rabbitmq 如何判断哪条amqp消息不是从basic.return响应路由的?

Rabbitmq 如何判断哪条amqp消息不是从basic.return响应路由的?,rabbitmq,amqp,Rabbitmq,Amqp,我将RabbitMQ与节点amqp lib一起使用。我正在发布设置了强制标志的消息,当没有到任何队列的路由时,RabbitMQ使用basic响应。返回规范中的 我的问题是,据我所知,basic.return是异步的,不包含任何关于未找到队列的消息的信息。即使exchange处于确认模式)。我该怎么知道返回了哪条消息呢?我阅读了AMQP规范,因为我以前使用过基本返回,没有任何问题,但我也在使用.NET客户端。我查看了节点amqp的文档,甚至看不到它是否实现了Basic.Return 在任何情况下,

我将RabbitMQ与节点amqp lib一起使用。我正在发布设置了强制标志的消息,当没有到任何队列的路由时,RabbitMQ使用
basic响应。返回规范中的


我的问题是,据我所知,
basic.return
是异步的,不包含任何关于未找到队列的消息的信息。即使exchange处于确认模式)。我该怎么知道返回了哪条消息呢?

我阅读了AMQP规范,因为我以前使用过基本返回,没有任何问题,但我也在使用.NET客户端。我查看了节点amqp的文档,甚至看不到它是否实现了Basic.Return


在任何情况下,服务器都会在无法发布时以完整消息进行响应。您可以考虑切换到一个不同的No.js库(例如,确实有这个特性(标记为<代码>频道>)(“返回”、“函数(MSG){…})< /代码>).

节点amqp从amqp接收到
基本.return
时会发出
'basic-return'
事件。唯一有用的是路由键。因为具有相同路由键的所有消息都以相同的方式路由。我假设,一旦我获得关于特定路由键的
基本.return
,所有具有此路由键的消息都可以被视为未送达

功能交付(路由密钥、消息、交换、解析、拒绝){
var未能交付=功能(ret){
if(ret.routingKey==路由密钥){
exchange.removeListener('basic-return',未能交付);
拒绝(新错误(“未能交付”);
}
};
汇兑日期('basic-return',未能交付);
exchange.publish(
路由(u key),,
消息
{deliveryMode:1,//非持久性
强制性:正确
},函数(发生错误,错误){
exchange.removeListener('basic-return',未能交付);
如果(发生错误){
拒绝(错误);
}否则{
解决();
}
});
}

如果您能提供更多信息,如语言和库,将会有所帮助。