我正在开发一个使用rabbitmq的项目。我必须使用的队列(让我们称之为“testq”不时会获得大约35000个必须处理的项目。
基本上(很短):
var q = new Queue();
q.subscribe('testq', { ack: true, prefetchCount: 100 }, function(doc, object, queueOptions, originalDocument) {
//do some action
originalDocument.acknowledge();
});
我现在的问题是:我希望一次收到100条消息(预取计数= 100),但我什么时候知道所有100条消息都已处理完毕,以便我可以确认并获取接下来的100条消息? “做一些动作块”是异步的:(
感谢您的任何建议!
答案 0 :(得分:3)
您逐一确认消息,并且您不必担心接收100条消息,而这是一个代理作业,可以向您发送消息。让do some action
异步没有错,只需在some action
完成后进行确认,我想它可以通过回调来完成,就像在node.js中完成的一样。这样的事情:
q.subscribe(
'testq',
{ ack: true, prefetchCount: 100 },
function(doc, object, queueOptions, originalDocument) {
doSomeAction(function() {
originalDocument.acknowledge();
});
}
);