gpt4 book ai didi

如果接收器未运行,Node.js RabbitMQ 消息会丢失

转载 作者:太空宇宙 更新时间:2023-11-04 01:15:47 24 4
gpt4 key购买 nike

这就是我遇到的问题

1.如果先启动接收器,然后发送消息,则消息已送达

2 但是,如果接收器未启动,则代码会显示消息已发送,但启动接收器不会收到消息。

如果我在 python 中使用 pika 尝试相同的序列,事情似乎正常工作。

我还使用rabbitmqctl --list_queues命令验证没有消息

我正在运行 node.js 0.70 并在 Ubuntu 11.04 64 位版本上运行

我的 send.js 中有以下代码

   var util= require('util')
var amqp = require('amqp');

var connection = amqp.createConnection({host:'localhost',
login:'guest',
password:'guest'});
var pubMessage = function pubM(msg) {
var x = connection.exchange();
var q = connection.queue('helloNode',
{ autoDelete: true, durable: false, exclusive: false }
);
x.publish('helloNode',{helloNode: "This is a message"});
};

connection.addListener('ready', pubMessage);
console.log(" Sent a message ");

以及我的接收器中的以下代码

   var util= require('util')
var amqp = require('amqp');
var connection = amqp.createConnection({host:'localhost',
login:'guest',
password:'guest'});

connection.on('ready', function () {
var q = connection.queue('helloNode',
{ autoDelete: true, durable: false, exclusive: false }
);
q.bind('#');

q.subscribe(function (message) {
util.p(message);
});
});

最佳答案

您的队列绑定(bind)正在设置 autoDelete: true。通过此设置,如果接收方未连接(或断开连接时),则没有队列可将消息路由到。设置 autoDelete: false 会使队列保持不变,即使接收方离线并且将继续累积消息。

关于如果接收器未运行,Node.js RabbitMQ 消息会丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9015343/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com