我是一个尝试在我的nodejs代码上实现RabbitMQ的新用户。我已经介绍了几个使用它的例子,但仍然不清楚如何使用它与实时示例。我正在尝试使用Rabbit MQ从队列中读取消息。如何从nodejs上的队列中读取消息?
提前致谢!
答案 0 :(得分:1)
Node.js有一个庞大的开源社区,有助于npmjs.org。有可能,有人已经建立了一个模块来做你想做的事。
在您的情况下,https://www.npmjs.com/package/amqp
来自 queue.subscribe([options,] listener)的文档:
q.subscribe(function (message, headers, deliveryInfo, messageObject) {
console.log('Got a message with routing key ' + deliveryInfo.routingKey);
});
答案 1 :(得分:0)
官方的rabbitmq教程提供了基本场景的示例,使用了Node.js和amqp.node
库(也就是“amqplib”)的工作代码。我建议从那里开始:
https://www.rabbitmq.com/tutorials/tutorial-one-javascript.html
我还有一个完整的培训指南,可以从头开始使用RabbitMQ和Node.js.重点是推动“微服务”,但材料的核心是学习RabbitMQ,首先:https://sub.watchmecode.net/guides/microservices-with-rabbitmq/
答案 2 :(得分:0)
如果您还在研究这个问题,我们刚刚在Node中发布了RabbitMQ的OSS库:BunnyBus(www.github.com/xogroup/bunnybus)
这是一个超级简单的立面,在幕后使用amqplib
。
const BunnyBus = require('bunnybus');
const bunnyBus = new BunnyBus({
protocol : process.env.RABBIT_PROTOCOL,
user : process.env.RABBIT_USER,
password : process.env.RABBIT_PASSWORD,
server : process.env.RABBIT_SERVER,
port : process.env.RABBIT_PORT,
vhost : process.env.RABBIT_V_HOST
});
const messageHandler = {
'event-name': (message, acknowledge, reject, requeue) => {
// do your work with the message here
return acknowledge();
}
};
// This will auto-connect and create the queue and bindings if they do not exist
bunnyBus.subscribe('queueName', messageHandler)
.then(() => {
const myMessage = {/*your contents here*/};
return bunnyBus.publish(myMessage, { routeKey: 'event-name' });
});