NodeJS项目中使用RabbitMQ

背景:本项目基于koa框架的node项目。mq包经过多方查资料,最终选择amqplib包,版本是0.10.2。如下图所示:
在这里插入图片描述

废话不多说,开始写代码:

一、创建rabbitMqConsume.js文件,内容如下:

let amqp = require("amqplib");
let moment = require('moment');
const { utils, errors, ret, nets } = require('rz-libs-utils');
//共享ctx
const shared_ctx=require("./shared-ctx");


async function mqConsume(){
   
    const mqConfig = {
        id : shared_ctx.getConfig('cgh.mq[0].id') || 'apiDependsProvide',
        exchangeName : shared_ctx.getConfig('cgh.mq[0].exchange') || 'test.ex-apiDependsExchange',
        queueName : shared_ctx.getConfig('cgh.mq[0].queue') || 'test.q-apiDependsProvide',
        routingkey : shared_ctx.getConfig('cgh.mq[0].routingkey') || 'TEST.apiDepends'
    }
    
    
    let conOps = {
        hostname: shared_ctx.getConfig('cgh.mq[0].address') || "XXX.XX.XX.XX",,
        port: shared_ctx.getConfig('cgh.mq[0].port') || 5672,
        username: shared_ctx.getConfig('cgh.mq[0].username') || 'test',
        password : shared_ctx.getConfig('cgh.mq[0].password') || '123456'
    }
    // console.log("conOps:",conOps.hostname);
    const conn = await amqp.connect(conOps);
    const ch = await conn.createChannel();
    const q = await ch.assertQueue(mqConfig.queueName, 
        {
            durable: true, 
            exclusive: false, 
            autoDelete: false, 
            //增加单活认证
            arguments: {
                        "x-dead-letter-exchange":"test.dlx-apiDependsProvide(dlx)"
                    },
            deadLetterExchange: "test.dlx-apiDependsProvide(dlx)",
            
        }
        );
    await ch.bindQueue(q.queue, mqConfig.exchangeName, mqConfig.routingkey);
    
    
    ch.consume(q.queue, async msg => {
        try {
            let msgJSON = JSON.parse(msg.content.toString());
            // console.log(msgJSON); 
            
                ch.ack(msg); //手动应答消息
            
        } catch (error) {
            console.log(error);
        }
        
        }, { noAck: false })//设置消息手动应答
    
}

module.exports.mqConsume = mqConsume;

二、上述编写消费者完成,下面开始编写启动时加载mq配置和注册消费者,关键代码如下:

const mq=require('./common/rabbitMqConsume')
...
setTimeout(function() {
  console.log('server is starting...');
  customInit(app);
}, 5000);

async function customInit(app) {
  serviceEntry.init(app).then(function(){
    const index = require('./routes/index')
    // routes
    app.use(index.routes(), index.allowedMethods())
    mq.mqConsume();
    console.log('server is started.');
  })
}

至此完结撒花★,°:.☆( ̄▽ ̄)/$:.°★

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值