NestJS+Axios+RxJS实现退避重试HTTP请求时form-data场景抛socket hang up错误
NestJS下FormData请求退避重试失败问题
问题描述
- 在NestJS应用中调用service-a的HTTP接口,需实现退避重试逻辑,测试时通过重启service-a的Docker容器模拟服务故障场景,配置重试次数为3次
- 实际运行结果:首次请求因service-a重启返回
405 service not available错误触发重试,后续三次重试均抛出socket hang up错误,且重试请求未在Nginx服务生成任何访问日志 - 预期结果:service-a启动完成后首次重试即可返回成功响应
问题排查更新
测试content-type: application/json的请求时,重试机制可正常运行,仅在content-type: form-data场景下出现该问题,属于FormData类型请求重试的常见共性问题。
关联参考资源:
- 服务架构图
- 基于NestJS Axios封装库的请求代码
rxjs的retryWithBackOff操作符实现代码- 三次socket hang up错误截图
解决方案
已通过Promises结合try&catch手动实现重试逻辑,解决了该问题。
参考:解决方案实现截图
内容的提问来源于stack exchange,提问作者Ahmed Atef
相关产品推荐
相关产品推荐

