2017-04-19 4 views
0
Hi i'm unable to figure out how to connect to rabbitmq using Mocha & chai framework. 
    I've installed rabbitmq & erlang on my local & trying to connect to rabbitmq by starting the server on local. 
    the code i'm using is as below: 
    <pre> 
    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(); 
     }); 
    }) 
    </pre> 

So is there any other way to connect to rabbitmq & publish a message? 

veröffentliche Ich habe versucht mit amqp Bibliothek, jeder Beispielcode für die Verbindung zu rabbitmq wird hilfreich sein.Wie man eine Nachricht an rabbitmq mit Mocha Framework

Kann mir jemand verstehen, wie man sich mit einer bestimmten Warteschlange verbindet, um eine Nachricht zu senden, wo die Nachricht veröffentlicht werden kann. Jede Hilfe würde wirklich geschätzt werden. Vielen Dank.

Antwort

1

Sie geben den falschen Anschluss an. Der Standardport amqp ist 5672. Wenn Sie den Standardport nicht ändern, müssen Sie den Port nicht in der amqp-Server-URL angeben. Das ist anstelle von amqp://localhost:15672/, Sie können einfach die URL als amqp://localhost angeben. Ich möchte ein Arbeitsprogramm für How to publish a message to rabbitmq using Mocha framework? geben.

Ich betreibe das RabbitMQ Server in meinem System mit Docker

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

Dann

// 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); 
     }); 
    }); 
}); 
Verwandte Themen