3

似乎有很多关于如何做到这一点的讨论,但我还没有找到任何具体的例子。我的节点应用程序正在访问一个即将传递到数据库的 RESTful API。我最初的解决方案是这样的

function getRecord() {
    var req = https.request(options, function(res){
        res.on('data', function(data) {
            var record = JSON.parse(data.toString('utf-8'));
            //do some database things then do it all over
            getRecord();
        });
    });
    req.write(queryString);
    req.end();
}

这完成了我想要的。我将继续从 API 获取新记录,但我不确定这是否是做我想做的最好的方法。

4

1 回答 1

1

一种(特别有利的)替代方案是切换到带有消息服务器(如 RabbitMQ)的总线架构。

您需要控制 API 或拥有可以注册回调的 API。

长轮询是一种可以很快降低性能和膨胀日志的策略。事件驱动的方法,就像我上面列出的那样,如果可能的话,是更受欢迎的。而且,与长轮询不同,事件驱动策略不会引入任何延迟。因此,如果延迟是一个问题,您轮询的频率越高,性能下降和日志膨胀就越多。

于 2013-05-02T20:22:38.040 回答