node-amqp和async ack

我正在使用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条消息(prefetch count = 100),但是我什么时候知道所有的100条消息都已经被处理,这样我就可以确认并获得下100条消息了? “做一些行动块”是asynchronous🙁

感谢您的任何build议!

  • 是http.ServerResponse.write()阻塞?
  • node.js与async.each async.series不按预期方式执行
  • node-mysql无法处理多个查询?
  • 原型和async.forEach的范围问题
  • 当使用node.js async forEachSeries时,是否有等价的语句来“继续”?
  • 这是用Neo4j编写多语句事务的正确方法吗?
  • 在加载Express 4.x之前启动数据库连接
  • 有条件地执行callback
  • 您一个接一个地确认消息,您不必担心获取下一个100条消息,而向您发送消息是一项中介工作。 do some actionasynchronous的do some action没有什么错,只是在完成some action之后做出确认,我想可以通过callback来完成,就像node.js中的所有事情一样。 类似的东西:

     q.subscribe( 'testq', { ack: true, prefetchCount: 100 }, function(doc, object, queueOptions, originalDocument) { doSomeAction(function() { originalDocument.acknowledge(); }); } );