RabbitMQ学习之:(十二)在Node.js环境下使用RabbitMQ

学,以致用。找了半天Node.js下RabbitMQ的库,看上去都不太趁手,直到最后找到了amqp库,看上去倒还不错,照着例子,写了第一个RabbitMQ的客户端。


首先,使用 npm install amqp --save 来安装node-amqp库,虽然他推荐使用全局安装,但是不去管它!

以下是客户端代码:


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

var connection = ampq.createConnection();

var bStop = false;

connection.on('ready', function () {
    connection.queue('moneyQueue', { durable: true, autoDelete: false }, function (queue) {
        console.log('Queue ' + queue.name + ' is open!');
        queue.subscribe(function (message, header, deliveryInfo) {
            if (message.data) {
                var messageText = message.data.toString()
                console.log(messageText);
                if (messageText === "quit") bStop = true;
            }
        });
    });
});


(function keepItRunning() {
    if (!bStop)
        setTimeout(keepItRunning, 1000);
    else
        connection.end();
})();

这个就是一个echo客户端,有消息过来,就打印出来,然后默默等待下一条消息。假如消息是quit,则优雅的退出~ 

其中,通过代码创建了一个可持久化的Queue: MoneyQueue,这个Queue自动会绑定到默认的Exchange,这个Exchange是RMQ提供的,所以也是持久的,这样就没问题了。

因为这个只是一个Consumer,没法单独工作,要验证的话,可以通过RMQ的管理页面,发送消息。



Node.js使用RabbitMQ,您可以使用amqp.node包。首先,您需要安装amqp.node包并引入它。然后,您可以使用amqp.connect方法创建与RabbitMQ服务器的连接,指定连接URL。在连接回调函数中,您可以通过调用conn.createChannel方法创建一个通道。接下来,您可以使用通道的方法来声明队列、发送消息和接收消息。例如,使用assertQueue方法声明一个队列,使用sendToQueue方法发送消息,使用consume方法接收消息。下面是一个使用amqp.node包的例子: get.js: ```javascript var amqp = require('amqplib/callback_api'); amqp.connect('amqp://localhost', function(err, conn) { // 创建连接 conn.createChannel(function(err, ch) { var q = 'test'; ch.assertQueue(q, {durable: false}); ch.consume(q, function(msg) { // 接收消息 console.log("get Message", msg.content.toString()); }, {noAck: true}); }); }); ``` push.js: ```javascript var amqp = require('amqplib/callback_api'); amqp.connect('amqp://localhost', function(err, conn) { // 创建连接 conn.createChannel(function(err, ch) { var q = 'test'; var msg = 'Hello World!'; ch.assertQueue(q, {durable: false}); ch.sendToQueue(q, new Buffer(msg)); // 发送消息 console.log("Send message:", msg); }); setTimeout(function() { conn.close(); process.exit(0) }, 500); }); ``` 以上是一个简单的使用amqp.node包在Node.js使用RabbitMQ的示例。您可以根据自己的需求进行更改和扩展。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Node.js使用rabbitMQ(一)](https://blog.csdn.net/weixin_34402090/article/details/85850603)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值