Node.js中使用消息队列RabbitMQ

1.安装

brew install rabbitmq

安装过程中,会报错

比如:

 brew install ca-certificates

 缺什么下什么就好了,下载好了可以查看

cd /Users/zhaoshihui/Library/Caches/Homebrew/downloads/

ls

下载完成:

2.启动RabbitMQ

cd /usr/local/Cellar/rabbitmq
ls
cd 3.9.14/
sbin/rabbitmq-server

3.登录RabbitMQ管理界面

可以在浏览器访问http://localhost:15672/#/

初始账户和密码都是guest

4.使用amqplib插件实现消息队列

1)安装: 

npm install amqplib -S

2)生产者


var http = require('http');
var amqp = require('amqplib/callback_api');


let server = http.createServer();


server.on("request", function (req, res) {
  
    res.writeHead(200, {'Content-Type': 'text/html;charset=utf8' });

    console.log(`收到客户端的请求了,请求路径是${req.url}`);

    var respText = '这是您输入的请求路劲::'+req.url;
    res.end(respText);



  if (req.url == "/") {
    res.write("首页");
  } else if (req.url == "/mq") {

        let url = {
            protocol: 'amqp',
            hostname: '127.0.0.1',
            port: 5672,
            username: 'guest',
            password: 'guest',
            vhost: '/'
        }



        amqp.connect(url,(connError, connection)=>{
            if(connError){
                throw connError;
            }
            
            connection.createChannel((channelError,channel)=>{
                if(channelError){
                    throw channelError;
                }
                const QUEUE = 'hello';
                channel.assertQueue(QUEUE);

                var i = 0;
                setInterval(() => {
                    i++;
                    channel.sendToQueue(QUEUE,Buffer.from('Server发送消息给scarlett....' + i.toString()));
                }, 1000);


            });
        });


  }


});


server.listen(8180, function () {
  console.log("服务器启动成功,可以通过http:127.0.0.1:8180/来进行访问");
});

 3)消费者


const amqp = require('amqplib/callback_api');
 
let url = {
    protocol: 'amqp',
    hostname: '127.0.0.1',
    port: 5672,
    username: 'guest',
    password: 'guest',
    vhost: '/'
}
amqp.connect(url,(connError, connection)=>{
    console.log("正在监听队列...")

    if(connError){
        throw connError;
    }

    connection.createChannel((channelError, channel)=>{
        if(channelError){
            throw channelError;
        }
        const QUEUE = 'hello';
        channel.assertQueue(QUEUE);
        channel.consume(QUEUE,(msg)=>{
            console.log(`Message received:${msg.content.toString()}`)
            // channel.ack(msg);
        },{
            noAck: true  //一旦消息被发送出去,它就会退出队列
        })
 
    })
});

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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、付费专栏及课程。

余额充值