我一直在使用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条消息,即使我在循环中发送更多消息。我想发送给接收者的消息数量可能有限制吗?请建议。
答案 0 :(得分:1)
我刚刚运行该代码并向接收者发送了29条消息,您是否同时运行了多个接收器?
Rabbitmq会在运行(连接到队列)的任何接收器上循环消息
答案 1 :(得分:0)
我得到了答案!
问题与消息字节配置有关,我已将其设置为 下面,问题是固定的
var common_options = {noAck: true, maxLength: 500, messageBytes: 10000000000 };
现在我可以每秒发送更多邮件。