node-amqp和async ack

时间:2013-08-16 05:59:17

标签: node.js asynchronous amqp

我正在开发一个使用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条消息? “做一些动作块”是异步的:(

感谢您的任何建议!

1 个答案:

答案 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();
        });
    }
);