我正在使用Google的发布/订阅队列来处理服务之间的消息。一些订户连接到速率限制API。

例如,我将街道地址推送到发布/订阅主题上。我有一个Cloud函数,该函数(通过推送)订阅该主题,并调出外部速率受限的地理编码服务。理想情况下,我的街道地址可以不加延迟地推送到主题上,并且主题将保留这些消息-以限速方式调用订户。

无论如何,是否需要配置这样的延迟或消息分发速率限制?增加Ack窗口并没有真正的帮助:我设计了该系统,以防止长时间运行功能。

最佳答案

解决问题的方法是使用: async.queue

那里有一个并发属性,可以管理速率限制。

// create a queue object with concurrency 2
var q = async.queue(function(task, callback) {
    console.log('hello ' + task.name);
    callback();
}, 2);

// assign a callback
q.drain = function() {
    console.log('all items have been processed');
};

// add some items to the queue
q.push({name: 'foo'}, function(err) {
    console.log('finished processing foo');
});

// quoted from async documentation

关于node.js - 如何对Google Cloud Pub/Sub队列进行费率限制,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45087540/

10-09 17:38