问题描述
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 (将#修改为@)