You need to enable JavaScript to run this app.
导航

请求幂等性

最近更新时间2023.10.26 16:27:25

首次发布时间2023.10.26 16:27:25

调用消息队列 RocketMQ版 OpenAPI 时,如果发生请求超时或服务端内部错误等问题,客户端可能会多次重试。为保证请求的幂等性,您可以在调用 OpenAPI 时设置 ClientToken 参数,避免多次重试导致重复创建资源。

如何保证请求的幂等性

请求幂等性指是同样的请求被执行一次与连续执行多次的效果相同,即幂等方法不具有统计用途以外的副作用。
通过 OpenAPI 创建云资源时,如果发生请求超时或服务端内部错误等问题,客户端可能会反复重试。如果原始的请求和后续重试的请求均执行成功,则每个请求都会创建一个资源,导致实际创建出的资源数量比预期中更多。消息队列 RocketMQ版支持 OpenAPI 请求幂等标识,后端服务会对客户端在请求中设置的幂等标识进行一系列判断检查,并识别当前请求是否为重试请求,从而进行下一步处理。
客户端在发送请求时,可以在请求参数中增加可选参数 ClientToken 作为幂等性标识。如果客户端在遇到 500 等错误时重试,服务端收到请求后会根据幂等性标识判断请求是否为重试请求。
幂等性标识的基本信息如下:

名称

类型

是否必选

示例值

描述

ClientToken

String

testClientToken

保证客户端请求幂等性的标识。
该标识为 1~64 位的 ASCII 字符串,大小写敏感,由客户端生成,应确保不同请求之间该标识具有唯一性。

幂等性标识使用说明:

  • 唯一性:幂等标识在不同请求中唯一,如果您提供了一个已经使用过的标识,但请求参数有变化,则服务端会返回

InvalidIdempotency 错误码。

  • 有效时间:幂等标识的时效性为 8 小时,如果您提供了一个已经失效的标识,则服务端会返回 InvalidIdempotency 错误码。
  • 使用幂等标识进行重试后:
    • 返回结果状态码为 2xx ,客户端会得到与上个请求完全相同的结果,例如创建实例请求成功时返回实例 ID 等信息。
    • 返回结果状态码为 4xx 时,客户端重试请求失败,建议根据错误信息排查问题后,重试请求。

支持幂等的 API

以下消息队列 RocketMQ版 OpenAPI 支持设置幂等性标识: