【发布时间】:2017-07-02 11:46:05
【问题描述】:
我正在开发一个node.js组件,它监听一个消息队列(ActiveMQ),并将接收到的消息分批添加到redis中(每批必须20条)。
从 ActiveMQ 接收的消息数为每秒 10 条或更少时没有问题。
我的问题是每 4 毫秒将消息添加到队列中。这导致添加到批次的记录数有时每批次超过 20 条。
const stompit = require('stompit');
var uuid = require('node-uuid');
var Redis = require('ioredis');
var redis = new Redis();
var pipeline = redis.pipeline();
var batchCounter = 0;
stompit.connect({ host: 'localhost', port: 61613 }, function(err1, client) {
client.subscribe({ destination: 'MyQueue' }, function(err2, msg) {
msg.readString('UTF-8', function(err3, body) {
if (batchCounter >= 20){
pipeline.exec(function(err4, results) {
pipeline = redis.pipeline();
batchCounter = 0;
console.log(results);
});
}
batchCounter++;
pipeline.set(uuid.v1(), JSON.stringify(body));
//client.disconnect();
});
});
});
如何解决这个问题? 谢谢
【问题讨论】: