node.js整合rebbitmq(amqplib)

1.回调函数示例

var q = 'tasks';
var rabbitmq= {
    hostname:"192.168.206.134",
    port:"5672",
    username:"admin",
    password:"123456",
    authMechanism: "AMQPLAIN" ,
    pathname:"/",
    ssl: { 
        enabled : false  
    }  
}
function bail(err) {
  console.error(err);
  process.exit(1);
}
// Publisher
function publisher(conn) {
  conn.createChannel(on_open);//创建信道
  function on_open(err, ch) {
    if (err != null) bail(err);
    ch.assertQueue(q);//声明一个队列
    ch.sendToQueue(q, Buffer.from('something to do'));//发送到队列
  }
}
// Consumer
function consumer(conn) {
  var ok = conn.createChannel(on_open);
  function on_open(err, ch) {
    if (err != null) bail(err);
    ch.assertQueue(q);
    ch.consume(q, function(msg) {//消费此队列消息
      if (msg !== null) {
        console.log(msg.content.toString());
        ch.ack(msg);
      }
    });
  }
}

require('amqplib/callback_api')
  .connect(rabbitmq, function(err, conn) {//创建连接
    if (err != null) bail(err);
    consumer(conn);
    publisher(conn);
  });

2.Promise示例

var q = 'tasks';
var rabbitmq= {
    hostname:"192.168.206.134",
    port:"5672",
    username:"admin",
    password:"123456",
    authMechanism: "AMQPLAIN" ,
    pathname:"/",
    ssl: { 
        enabled : false  
    }  
}
var open = require('amqplib').connect(rabbitmq);

// Publisher
open.then(function(conn) {
  return conn.createChannel();
}).then(function(ch) {
  return ch.assertQueue(q).then(function(ok) {
    return ch.sendToQueue(q, Buffer.from('something to do'));
  });
}).catch(console.warn);

// Consumer
open.then(function(conn) {
  return conn.createChannel();
}).then(function(ch) {
  return ch.assertQueue(q).then(function(ok) {
    return ch.consume(q, function(msg) {
      if (msg !== null) {
        console.log(msg.content.toString());
        ch.ack(msg);
      }
    });
  });
}).catch(console.warn);

  

posted @ 2021-05-25 20:47  ㊀觉睡到小时候  阅读(222)  评论(0)    收藏  举报