向Rabbitmq简单发布许多消息

时间:2014-10-13 03:06:06

标签: node.js rabbitmq

我想连续多次发送相同的消息,但我需要使用循环。当我使用循环时,不会发送任何消息。我在Nodejs中使用amqp。

以下是发送单个邮件的工作代码。我该怎么办才能送多个人。我已经尝试在connection.publish部分周围缠绕一个while循环,但没有发送任何内容。

var amqp = require('amqp');
var connection = amqp.createConnection({url: "amqp://tester:tstpsswrd@10.4.52.115:5672"});

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

我很肯定我在这里做了一些愚蠢的错误,或者可能会遗漏一些东西。第一次使用rabbitmq。

更新,循环示例

var amqp = require('amqp');
var connection = amqp.createConnection({url: "amqp://tester:tstpsswrd@10.4.52.115:5672"});

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

1 个答案:

答案 0 :(得分:0)

在实际情况中,您不能也不应该有一个无限循环来写入消息代理。必须有一些基于事件的事物或适当定义的数字。 试试这段代码,你可以根据你的要求使用for循环:

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