1

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

感谢您的任何建议!

4

1 回答 1

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();
        });
    }
);
于 2013-08-16T07:05:25.287 回答