如何使用Mocha框架将消息发布到rabbitmq

如何使用Mocha框架将消息发布到rabbitmq,rabbitmq,mocha.js,chai,Rabbitmq,Mocha.js,Chai,您好,我不知道如何使用Mocha&chai框架连接到rabbitmq。 我已经在本地服务器上安装了rabbitmq&erlang,并试图通过在本地服务器上启动服务器来连接rabbitmq 我使用的代码如下所示: var chai = require('chai'); var chaiHttp = require('chai-http'); var request = chai.request; var should = chai.should(); var

您好,我不知道如何使用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的示例代码都会很有帮助

有人能让我了解如何连接到特定队列以发送消息,在那里可以发布消息吗


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

您指定了错误的端口。默认的
amqp
端口是
5672
。如果不更改默认端口,则不需要在amqp服务器url中指定端口。而不是
amqp://localhost:15672/
,您只需将url指定为
amqp://localhost
。我想为
如何使用Mocha框架将消息发布到rabbitmq?
提供一个工作程序

我使用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);  
      });
  });
});