繁体   English   中英

如何在nodejs上使用来自RabbitMQ的消息

[英]How to consume messages from RabbitMQ on nodejs

我是一个尝试在我的nodejs代码上实现RabbitMQ的新用户。 我已经介绍了几个使用它的例子,但仍然不清楚如何使用它与实时示例。 我正在尝试使用Rabbit MQ从队列中读取消息。 如何从nodejs上的队列中读取消息?

提前致谢!

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);
});

😉

官方的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/

如果您仍在研究这个问题,我们刚刚在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' });
    });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM