特性: 重试机制

作者: Aniket-lodh创建于 2025年2月27日更新于 2025年2月27日

代理请求失败的重试机制

我们需要一个重试机制来处理代理请求中的临时服务不可用和连接故障, 比如“ ECONNREFUSED ”

当前的行为

  • 与微服务连接的单一尝试
  • 在ECONNREFUSED上返回503人
  • 没有为失败的请求重试逻辑

拟议变动

  1. 添加重试配置 :
  • 最大1-3重试尝试(可配置)
  • 手动延迟b/w 每一次失败重试(1s, 2s, 4s)(可配置)
  • 每个请求10s超时(可配置)
  • 由管理人员决定复试机制将如何运作。
  1. 处理具体错误案件:
  • 解开
  • 经济
  • 释放
  1. 添加回复状态:
  • 503次服务(临时)
  • 504个网关超时
  • 500个内部服务器出错(其他案例)

QQ 代码示例

zz
const service proxy middleware = (目标 url) {{
const 代理 = 创建ProxyMiddleware({)
目标:“http://localhost:302/api/v0/endpoint”,
换欧林:真,
记录器:控制台,
自我应对:真实的,
重试 : {
尝试: 3,
延迟: 1 000,
系数: 2,
重试条件 :( err) {{
返回( ưμ㼯A
错误。 代码“ ECONNREFUSED ”
错误. 编码"Econneset".
错误. 编码"ETIMEDOUT"
(三)
{\fn华文楷体\fs16\1cHE0E0E0}
{\fn华文楷体\fs16\1cHE0E0E0}
时间:{
代理Req: 修复请求Body,
代理Res: 响应 Interceptor(save to cache),
错误:(err, req, res) {{{
如果(err.code QQ"ECONNREFUSED") {
第503号决议.json({)
状态 : “ 错误 ”
消息 :
"服务暂时不可用 / 正在重新启动, 请再试一次"
代码: "Service UNAAILALL",
* ;
否则
Res.status(500).json({
状态 : “ 错误 ”
消息 : “ 内部服务器出错 ”
代码 : “ PROXY  错误”,
* ;
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
{\fn华文楷体\fs16\1cHE0E0E0}
{\fn华文楷体\fs16\1cHE0E0E0}
* ;
返回代理服务器;
* ;

相关问题:176

++ 附加上下文( 可选)

"http-proxy-middleware":"^3.0.3","^". "节点":">=22.0.0". "表达":"^4.21.2"

内容来源: chimurai/http-proxy-middleware