首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >订单请求接口设计,避免timeout超时问题 下单解决

订单请求接口设计,避免timeout超时问题 下单解决

作者头像
oktokeep
发布2024-10-09 11:01:36
发布2024-10-09 11:01:36
4180
举报
文章被收录于专栏:第三方工具第三方工具

订单请求接口设计,避免timeout超时问题 下单解决

接上篇:外部系统对接下单幂等性校验逻辑及接口超时处理

https://cloud.tencent.com/developer/article/2455771

1.第一步

中间表数据 & 取消接口 两件事情分开,不要因为中间表缺失数据,而影响到取消的操作。

2.第二步

中间表数据兼容,不存在的时候才新增,同时兼容存在多条记录的情况 同时兼容多条的记录,按最新的排序取第一条来处理。

测试通过: 下单 》》 订单推送(订单同步到第三方系统) 》》需要流程来测试。 完整流程才可以确保少出错!!! 测试发现下单是成功了,但是订单推送同步因为缺失中间表的数据而异常了。

3.第三步

结论: redis锁定的时间,需要大于接口超时的时间。目前是10秒 redis

桥接过来的数据,需要等待数据落库。及接口的事务提交完成。

<<<

代码语言:javascript
复制
日志请求链路明细:
13:30:00  订单下单 超时时间,需要分析完整的日志    
  2023-09-11 09:10:06


2023-09-11 09:09:15.046	请检查姓名和身份证号码是否一致
2023-09-11 09:09:19.921	请检查姓名和身份证号码是否一致

2023-09-11 09:10:05.186
2023-09-11 09:10:14.915	请勿重复提交!
2023-09-11 09:10:20.696	feign.RetryableException: Read timed out executing POST

15秒 接口超时
10秒 redis

2023-09-11 09:10:21.740        新的请求
2023-09-11 09:10:22.255	您在该时间段内已订单,请勿重复下单。

>>> 结论: redis锁定的时间,需要大于接口超时的时间。目前是10秒 redis(简单的理解:锁定的时间包的住接口超时的时间,这样可以避免请求方因为超时而频繁请求。)
桥接过来的数据,需要等待数据落库。及接口的事务提交完成。
<<<
代码语言:javascript
复制
更改调用方  15000  修改成  9000            redis锁定10秒,更改的是调用方的Apollo配置,而不是服务提供方的Apllo配置。( A调用B,更新的是A的配置)
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds = 9000

ribbon.ReadTimeout = 9000

ribbon.ConnectTimeout = 9000
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-09-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档