题库系统集成项目管理工程师
公开详解

系统集成项目管理工程师 · 第三版 · 第7章 软硬件系统集成

创建订单接口超时后自动重试,怎样避免同一请求生成两笔订单?

4 道章节练习题
单选题第7章 软硬件系统集成2 / 4

客户端调用“创建订单”接口后没有及时收到响应,于是自动重试。第一次请求其实已经在服务端成功落库,第二次请求又到达服务端,造成重复订单。较合理的改进是()。

选择答案
未作答
答案与解析

正确答案 A

同一次业务操作在重试时应复用同一个幂等键。服务端第一次处理后保存该键与结果,后续收到相同键时返回原结果,而不是再次创建订单;数据库业务唯一约束可以进一步防止并发情况下的重复写入。

先把网络超时和业务失败分开。客户端没收到回包时,服务端可能成功、失败,也可能还在处理。此时盲目再创一单最危险。让第一次和重试带同一个业务身份证,服务端见过就返回上次结果,才是稳妥做法。

选项分析

A
正确,幂等键识别同一业务操作,唯一约束用于应对并发穿透等边界情况。
B
无限等待会占用资源,也不能解决连接中断和未知结果问题。
C
每次生成新订单号会把重试伪装成新业务,正好放大重复订单风险。
D
前端防抖只能减少人工连点,无法阻止网关、客户端或消息系统的自动重试。

容易混淆的地方

很多接口问题被归因于“用户点了两次”,实际重复更常来自超时重试、消息重复投递或并发请求。只修页面按钮,服务端仍然没有业务级防重能力。

再巩固一步

  • 用支付、下单、创建工单三个场景分别思考重复执行的后果
  • 答接口案例题时把超时、重试、幂等、唯一约束和结果查询连成闭环
原创高频场景题查看完整题目与详解

练习小结

题目纠错

未发送。正式接收渠道尚未接通。

查看纠错信息