nodejs + amqp默默死亡
我有基本脚本采取amqp消息,并转发给socket.io它工作几个小时,有时几天,但最终它静静地停止转发amqp消息,同时继续发出心跳。
日志显示,当它到达中断状态时,它不会尝试发送socket.io消息,因为amqp消息到达,所以我认为问题是与amqp连接/订阅,而不是socket.io
我testing了脚本运行时手动closures并重新启动rabbitmq服务器,似乎没有问题重新连接,并继续按照它应该的function。
var port = 8888, http = require("http"), amqp = require("amqp"), socketio = require("socket.io"), express = require("express"), rabbitMq = amqp.createConnection({ host: 'server', reconnect: true }), app = express(), server = http.createServer(app), io = socketio.listen(server); rabbitMq.on("ready", function () { console.log("ready"); var queue = rabbitMq.queue("ft-secondary-display", function () { queue.bind(rabbitMq.exchange('ft', {type: 'topic'}), "data"); console.log("bound"); queue.subscribe(function (message, headers, basicInfo) { var data = {'key': basicInfo, 'data': message.data.toString()}; io.sockets.emit("message-name", data); }); }); }); setInterval(hb, 10000); function hb(){ io.sockets.emit("message-name", "heartbeat"); }
这是amqp库中的一个错误: https : //github.com/postwait/node-amqp/issues/306
- AMQP使用Node.js,我如何发布/订阅?
- 如何使用AMQP在“PeekLock”模式下从Azure服务总线队列获取消息?
- RabbitMQ(和node.js)中的asynchronous确认
- RabbitMQ&NodeJS:继“每个应用1个连接,每个线程1个通道,每个通道1个用户”指南
- AMQP警告:检测到可能的EventEmitter内存泄漏。 添加了11位听众。
- 如何从amqplib库使用node.JS的channel.assertQueue函数?
- node-amqp不能发送消息给RabbitMQ
- RabbitMQ vs Socket.io?
- Node.js中的ECONNRESET Azure中的RabbitMQ使用者