schumacherj
schumacherj

Reputation: 1324

Simple publishing of many messages to Rabbitmq

I want to send the same messages many times in a row, but i need to use a loop. When I use a loop though, no messages are sent. I am using amqp in Nodejs.

Here is the working code for sending a single messages. What should I do to send many. I have already tried just wrapping a while loop around the connection.publish part and nothing was sent.

var amqp = require('amqp');
var connection = amqp.createConnection({url: "amqp://tester:[email protected]:5672"});

connection.on('ready', function () {
  connection.queue('my-queue', function (q) {
      connection.publish('my-queue', 'hi');
   });
});

I'm positive that I am doing something stupid wrong here, or maybe missing something. First time with rabbitmq.

Update, Loop example

var amqp = require('amqp');
var connection = amqp.createConnection({url: "amqp://tester:[email protected]:5672"});

connection.on('ready', function () {
  connection.queue('my-queue', function (q) {
     while(true){
      connection.publish('my-queue', 'hi');
     }
   });
});

Upvotes: 1

Views: 2537

Answers (1)

Vickrant
Vickrant

Reputation: 1303

In practical scenario you can not and should not be having a infinite loop as such for writing to a message broker. There have to be some event based thing or a proper defined number. Try this code you can use the for loop according to your requirement:

var amqp = require('amqp');
var connection = amqp.createConnection({ host: 'localhost', port: 5672});


connection.on('ready', function () {
        for(var i=0; i<1000; i++){
                 var status = writeOnQueue("testing the queue"+i);
        }
});

function writeOnQueue(xml){
        var msg = xml;
        console.log(msg);
        try{
                connection.exchange('test-exchange', {confirm: true},function(exchange) {
                        publish = exchange.publish('my-queue',msg, { mandatory: false });
                        console.log('sent the message success test-exchange');
                        return true;
                });
        }
        catch(e){
                console.log('Some error occured.'+ e);
        }
}

Upvotes: 1

Related Questions