美文网首页
MQ客户端服务器端简单的demo

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

作者: 陆遥远 | 来源:发表于2019-06-11 16:08 被阅读0次

    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

          本文链接:https://www.haomeiwen.com/subject/mauqfctx.html