【发布时间】:2017-03-29 12:02:58
【问题描述】:
我正在构建一个 REST-amqp 示例,其中我从 rabbitmq 中的给定队列获取消息,然后通过 REST 将消息发送回客户端。
我已经按照rabbitmq教程为node.js实现了代码
var amqp = require('amqplib/callback_api');
amqp.connect('amqp://192.168.225.203:5672', function (err, conn) {
conn.createChannel(function (err, ch) {
var q = 'aQueue';
ch.assertQueue(q, { durable: false });
var messages = [];
console.log(" [*] Waiting for messages in %s. To exit press CTRL+C", q);
ch.consume(q, function (msg) {
console.log(" [x] Received %s", msg.content.toString());
messages.push(msg.content.toString());
messages.forEach(function(element) {
console.log(element);
});
}, { noAck: true });
});
});
我可以将所有消息合并到一个数组(消息)中,但是这个函数一直运行到应用程序停止,这不是一件好事,因为 REST 客户端将永远等待...... 如果第一个选项不可行,我想在队列为空或一段时间(2 秒)后停止该功能并继续执行该程序。 我发现在 Java 中解决了同样的问题,但在 JS 中没有解决。
非常感谢任何提示。
干杯,乔瓦尼
【问题讨论】:
标签: javascript node.js rabbitmq amqp