MQ客户端服务器端简单的demo

MQ客户端服务器端简单的demo

  • server端
var amqp = require('amqplib');
//首先我们需要通过amqp连接本地的rabbitmq服务,返回一个promise对象
amqp.connect('amqp://127.0.0.1').then(function(conn){
//进程检测到终端输入CTRL+C退出新号时,关闭RabbitMQ队列。
  process.once('SIGN',function(){
    conn.close();
  });
//连接成功后创建通道
  return conn.createChannel().then(function(ch){
//通道创建成功后我们通过通道对象的assertQueue方法来监听hello队列,并设置durable持久化为false。这里消息将会被保存在内存中。该方法会返回一个promise对象。
    var ok = ch.assertQueue('hello',{durable:false}).then(function(_qok){
//监听创建成功后,我们使用ch.consume创建一个消费者。指定消费hello队列和处理函数,在这里我们简单打印一句话。设置noAck为true表示不对消费结果做出回应。
//ch.consume会返回一个promise,这里我们把这个promise赋给ok。
      return ch.consume('hello',function(msg){
        console.log("[x] Received '%s'",msg.content.toString());
      },{noAck:true});
    });
//消费者监听完成之后,打印一行成功信息
    return ok.then(function(_consumeOk){
      console.log('[*] Waiting for message. To exit press CRTL+C');
    });
  });
}).then(null,console.warn);//如果报错打印报错信息
  • client端
var amqp = require('amqplib');
var when = require('when');
//连接本地消息队列服务
amqp.connect('amqp://localhost').then(function(conn){
//创建通道,让when立即执行promise
  return when(conn.createChannel().then(function(ch){
    var q = 'hello';
    var msg = 'Hello World';
  //监听q队列,设置持久化为false。
    return ch.assertQueue(q,{durable: false}).then(function(_qok){
  //监听成功后向队列发送消息,这里我们就简单发送一个字符串。发送完毕后关闭通道。
      ch.sendToQueue(q,new Buffer(msg));
      console.log(" [x] Sent '%s'",msg);
      return ch.close()
    });
  })).ensure(function(){ //ensure是promise.finally的别名,不管promise的状态如何都会执行的函数
//这里我们把连接关闭
    conn.close();
  });
}).then(null,console.warn);

你可能感兴趣的:(MQ客户端服务器端简单的demo)