Rest 如何在暂时异常重试期间处理客户端响应?
上下文 我正在开发一个RESTAPI,正如您所期望的,它由多个外部跨网络服务、API和数据库支持。很有可能在任何点遇到瞬时故障,因此应重试该操作。我的问题是,在重试操作期间,我的API应该如何响应客户端 假设客户机正在发布资源,而我的服务器在尝试写入数据库时遇到暂时异常。使用重试模式(可能是断路器模式)的组合,我的服务器端代码应该尝试在随机线性/指数退避实现之后重试该操作。客户显然会在这段时间等待,这不是我们想要的 问题 客户机在重试操作中的位置Rest 如何在暂时异常重试期间处理客户端响应?,rest,http,exception,response,transient-failure,Rest,Http,Exception,Response,Transient Failure,上下文 我正在开发一个RESTAPI,正如您所期望的,它由多个外部跨网络服务、API和数据库支持。很有可能在任何点遇到瞬时故障,因此应重试该操作。我的问题是,在重试操作期间,我的API应该如何响应客户端 假设客户机正在发布资源,而我的服务器在尝试写入数据库时遇到暂时异常。使用重试模式(可能是断路器模式)的组合,我的服务器端代码应该尝试在随机线性/指数退避实现之后重试该操作。客户显然会在这段时间等待,这不是我们想要的 问题 客户机在重试操作中的位置 我是否应该在JSON响应中提供一个isTrans
isTransient:true
指示符,让客户端重试非常感谢。重试有一些规则:
- 始终创建幂等键以了解存在重试操作
- 如果您的操作很复杂,并且希望用retry包装rest调用,则必须确保对于重复的请求不会产生任何副作用(从失败点开始,不要执行成功代码)
isTransient:true
不应该作为资源的一部分
警告:在将重试策略添加到必须检查副作用的内容之前,将重试策略放在任何地方都是不好的做法