Visindigo::Network::RetryPolicy Struct
struct Visindigo::Network::RetryPolicy请求重试策略. 详情...
| 头文件: | #include <Network/HttpTypes.h> |
| 自以下版本: | Visindigo 0.17.0 |
详细说明
RetryPolicy 描述一次请求在失败后是否可以重试、重试几次、以及退避方式。 它属于纯值类型,可以随意拷贝与修改。
默认策略只对幂等方法(GET / HEAD / PUT / DELETE / OPTIONS)生效, 这是 RetryIdempotentOnly 的默认值。之所以这样设定,是因为 POST 重试可能造成服务端重复处理(例如重复下单、重复扣费),而这在传输层 无法自动判断安全性,因此必须由调用方显式关闭该开关才允许重试。
- MaxAttempts 总尝试次数(含首次),为 1 表示不重试。
- InitialDelayMs 首次重试前的等待毫秒数。
- MaxDelayMs 退避延迟的上限,避免因指数增长而等待过久。
- BackoffMultiplier 退避倍数,每次重试后延迟乘以此值。
- UseJitter 是否在延迟上叠加随机抖动,用于避免大量客户端同时重连造成的惊群。
- RespectRetryAfter 是否优先采纳服务端返回的 Retry-After 头(多见于 429 / 503)。
- RetryOnTimeout 超时是否可重试。
- RetryOnConnectionError 连接类错误(拒绝、DNS 失败、TLS 失败等)是否可重试。
- RetryOnStatusError 命中
RetryableStatusCodes的状态码是否可重试。 - RetryIdempotentOnly 是否只对幂等方法重试。
- RetryableStatusCodes 允许重试的 HTTP 状态码集合。