干净地丢弃 NodeJS http.Agent 中排队的 HTTP 请求

问题描述

NodeJS http.Agent 允许配置对给定请求使用多少套接字的限制,并安排在套接字空闲时执行超过此限制的套接字。

还提供了一种检查排队请求的方法,记录在 agent.requests 中。文档明确指出

一个包含尚未分配给套接字的请求队列的对象。 请勿修改

(强调我的)

但是没有办法告诉特工“嘿,请放下你正在做的一切并重置一切”。也许我找错了地方,但据我所知,一旦请求排队,它被执行。

目前我正在实现一个 Circuit Breaker(使用 opossum)。一旦断路器跳闸,我想重置有问题的 http.Agent 以释放所有套接字,并且不会立即启动先前排队的套接字。这是我正在做的:

circuitBreaker.on("open",() => {
    console.warn(`CircuitBreaker opened`);

    // Remove pending requests
    for (const requests of Object.values(httpAgent.requests)) {
        requests.length = 1;
    }

    // close all existing sockets
    httpAgent.destroy();
});

这个“有效”,但 a) 可能是偶然的,b) 感觉很粗略。这样做的正确方法是什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)