RabbitMQ - 接收器一次只接收14条消息

时间:2015-01-19 09:18:23

标签: node.js rabbitmq

我一直在使用RabbitMQ作为我的一个nodejs项目。 我使用以下代码格式发送者/接收者

发件人:

#!/usr/bin/env node
var amqp = require('amqplib');
var when = require('when');

for(loop=1; loop<30; loop++){

  amqp.connect('amqp://localhost').then(function(conn) {
    return when(conn.createChannel().then(function(ch) {
      var q = 'hello';
      var msg = {'status':'success', 'message': 'Hello World!'};

      var ok = ch.assertQueue(q, {durable: false});

      return ok.then(function(_qok) {

          ch.sendToQueue(q, new Buffer("Message"), { headers: { 'device_token' : "321654987" } });
          console.log(" [x] Sent '%s'", msg);
          return ch.close();

      });
    })).ensure(function() { conn.close(); });;
  }).then(null, console.warn);
}

接收者:

var Bitstamp = require('../bitstamp.js');
var count = 0;
var amqp = require('amqplib');
var common_options = {noAck: false, maxLength: 500 };

amqp.connect('amqp://localhost').then(function(conn) {
  process.once('SIGINT', function() { conn.close(); });
  return conn.createChannel().then(function(ch) {

    var ok = ch.assertQueue('hello', {durable: false});

    ok = ok.then(function(_qok) {
      return ch.consume('hello', function(msg) {
        count ++;
        console.log("Received Message : "+count);

      }, common_options); 

    });

    return ok.then(function(_consumeOk) {
      console.log(' [*] Waiting for messages. To exit press CTRL+C');
    });
  });
}).then(null, console.warn);


function parseResult(data){
  return JSON.stringify(data);
}

但是我总是在接收端只接收14条消息,即使我在循环中发送更多消息。我想发送给接收者的消息数量可能有限制吗?请建议。

2 个答案:

答案 0 :(得分:1)

我刚刚运行该代码并向接收者发送了29条消息,您是否同时运行了多个接收器?

Rabbitmq会在运行(连接到队列)的任何接收器上循环消息

答案 1 :(得分:0)

我得到了答案!

问题与消息字节配置有关,我已将其设置为 下面,问题是固定的

var common_options = {noAck: true, maxLength: 500, messageBytes: 10000000000 };

现在我可以每秒发送更多邮件。