2014-10-13 3 views
0

Я хочу отправлять одни и те же сообщения много раз подряд, но мне нужно использовать цикл. Однако, когда я использую цикл, сообщения не отправляются. Я использую amqp в Nodejs.Простая публикация многих сообщений для Rabbitmq

Вот рабочий код для отправки отдельных сообщений. Что я должен сделать, чтобы отправить много. Я уже пробовал просто обернуть цикл while вокруг части connection.publish и ничего не было отправлено.

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'); 
    }); 
}); 

Я уверен, что я делаю что-то глупое здесь или, возможно, что-то не хватает. Первый раз с кроликом.

Update, например, Loop

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'); 
    } 
    }); 
}); 
+0

вы можете показать цикл, который вы пробовали? – Ravi

+0

этот жесткий цикл никогда не позволит ничего случиться. Можете ли вы обновить свой настоящий код здесь? – UncleKing

ответ

0

В практическом сценарии вы не можете и не должны быть с бесконечный цикл как таковой для записи в сообщении брокера. Должно быть какое-то событие, основанное на событиях, или определенное определенное число. Попробуйте этот код вы можете использовать для цикла согласно вашему требованию:

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); 
     } 
} 
Смежные вопросы