Javascript 是否仍要防止rabbitmq死信队列丢弃属性?
我在rabbitmq上使用死信交换功能来执行计划的rpc调用,但在队列死信后,它删除了原始队列中的replyto属性。是否仍然需要以将其保留在“死队列”中的方式声明replyto属性Javascript 是否仍要防止rabbitmq死信队列丢弃属性?,javascript,rabbitmq,Javascript,Rabbitmq,我在rabbitmq上使用死信交换功能来执行计划的rpc调用,但在队列死信后,它删除了原始队列中的replyto属性。是否仍然需要以将其保留在“死队列”中的方式声明replyto属性 顺便说一句,我是用node.js中的amqplib来实现这一点的。不幸的是,RabbitMQ将只保留下列属性: queue—消息在死信之前所在队列的名称 原因-使用DLX的原因 时间-消息的日期和时间以64位AMQP格式时间戳的形式显示 exchange—邮件发布到的exchange 路由密钥-发布邮件时使用的路
顺便说一句,我是用node.js中的amqplib来实现这一点的。不幸的是,RabbitMQ将只保留下列属性:
- queue—消息在死信之前所在队列的名称
- 原因-使用DLX的原因
- 时间-消息的日期和时间以64位AMQP格式时间戳的形式显示
- exchange—邮件发布到的exchange
- 路由密钥-发布邮件时使用的路由密钥
- 计数-由于此原因,此消息在此队列中出现死信的次数,以及
- 原始过期-消息的原始过期属性李>
var DrinkRequestSender = new Sender(/* ... details ... */);
var DrinkRequestReceiver = new Receiver(/* ... details ... */);
var DrinkStation = {
make: function(drink){
DrinkRequestReceiver.receive((response) => {
var drinkResponse = response.body;
this.trigger("drinkup", drinkResponse);
});
var drinkData = drink.toJSON();
DrinkRequestSender.send(drinkData);
}
};
在本例中,代码发送“请求”,然后接收“响应”——但不使用标准RPC设置。它使用专用队列进行响应,另一端的代码通过路由到该队列的交换机将响应发送回
这使您能够更好地处理故障场景、长时间运行的流程等
不过,这种双向消息传递方式确实增加了一些额外的挑战。首先,您必须具备重建发出原始请求的对象的能力
您可以在中找到此详细信息,中还有更多信息(以及许多其他模式)
希望有帮助 谢谢你的回答,德里克!我将试试你的建议:)