我正在使用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/