【问题标题】:How to publish a message to rabbitmq using Mocha framework如何使用 Mocha 框架向 rabbitmq 发布消息
【发布时间】:2017-09-15 03:07:39
【问题描述】:

您好,我不知道如何使用 Mocha 和 chai 框架连接到 rabbitmq。 我已经在本地安装了 rabbitmq 和 erlang,并尝试通过在本地启动服务器来连接到 rabbitmq。

我使用的代码如下:

    var chai = require('chai');
    var chaiHttp = require('chai-http');
    var request = chai.request;
    var should = chai.should();
    var expect = chai.expect;
    var assert = chai.assert;
    var supertest = require('supertest');
    var fs = require('fs');
    var amqp = require('amqplib/callback_api');

    //Plugin for HTTP, etc.
    chai.use(chaiHttp);
    process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0';

    describe("Testing RabbitMQ : ", function () {

        it("Send a message : ", function (done) {
            amqp.connect('amqp://localhost:15672/', function (err, conn) {
                conn.createChannel(function (err, ch) {
                    var q = 'hello';
                    ch.assertQueue(q, { durable: false });
                    // Note: on Node 6 Buffer.from(msg) should be used
                    ch.sendToQueue(q, new Buffer('Hello World!'));
                    console.log(" [x] Sent 'Hello World!'");
                });
                setTimeout(function () { conn.close(); process.exit(0) }, 500);
            });
            done();
        });

        it("Receive a message", function (done) {
            amqp.connect('amqp://localhost:15672/', function (err, conn) {
                conn.createChannel(function (err, ch) {
                    var q = 'hello';

                    ch.assertQueue(q, { durable: false });
                    console.log(" [*] Waiting for messages in %s. To exit press CTRL+C", q);
                    ch.consume(q, function (msg) {
                        console.log(" [x] Received %s", msg.content.toString());
                    }, { noAck: true });
                });
            });
            done();
        });
    })

那么还有其他方法可以连接到 rabbitmq 并发布消息吗? 我已经尝试使用 amqp 库,任何连接到 rabbitmq 的示例代码都会有所帮助。

谁能让我了解如何连接到特定队列以发送消息,可以在其中发布消息。

任何帮助将不胜感激。谢谢。

【问题讨论】:

    标签: rabbitmq mocha.js chai


    【解决方案1】:

    您指定了错误的端口。默认的amqp 端口是5672。如果您不更改默认端口,则无需在 amqp 服务器 url 中指定端口。也就是说,您可以简单地将 url 指定为 amqp://localhost,而不是 amqp://localhost:15672/。我想为How to publish a message to rabbitmq using Mocha framework? 提供一个工作程序。

    我使用 docker 在我的系统中运行 RabbitMQ 服务器

    docker run -d --hostname rabbit1 --name rabbit1 -e RABBITMQ_ERLANG_COOKIE=rabbitcluster -p 30000:5672 -p 30001:15672 rabbitmq:management
    

    然后

    // test.js
    
    var chai = require('chai')
    var amqp = require('amqplib/callback_api');
    var chaiHttp = require('chai-http')
    var should = chai.should()
    chai.use(chaiHttp);
    var config={
      protocol: 'amqp',
      hostname: 'localhost',
      port: 30000,
      username: 'guest',
      password: 'guest',
    }
    var q="ex.queue";
    var msg =  "Hello World!";
    
    describe('Testing RabbitMQ',function(){
      it('Sending Message to RabbitMQ Server',function(done){
        amqp.connect(config, function(err, conn) {
          if(err){
            console.log("connection error");
            return;
          }
          conn.createConfirmChannel(function(err, ch) {
            if(err){
               return;
            }     
              ch.assertQueue(q, {durable: true}); 
        ch.sendToQueue(q, new Buffer(msg), {persistent: true},
            function(err){
              if(err){
                console.log("msg resend err==>",err);
                return;         
              }
              else{
                console.log(" [x] reSent '%s'", msg);
              }
            });  
            });
            done(); 
            setTimeout(function() { conn.close();}, 500);  
          });
      });
    });
    

    【讨论】:

      猜你喜欢
      • 2016-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-21
      • 2019-04-25
      相关资源
      最近更新 更多