接口重复调用的容错处理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012441545/article/details/52062715

特产接口重复调用的容错处理

(1)      需求:

客户下订单,可能会出现重复提交订单的情况,例如客户提交了两次订单,

假如第一次是有效的提交,第二次是无效的订单,如何区别出这两次的提交是同一个订单。

(2)      数据库表的需求:

1)每天每个账号只有一条记录,上面的seq改为seqs空格隔开多个序号

2)数据库设计的表如下:

3seqs设置为text或者varchar(1024)来实现,设置一个date来实现每天每个账号只有一条记录。

3)整个请求流程

           1)系统启动或者每天凌晨,把当天的序号从db加载到缓存

           2)当有请求过来时,从缓存中取出数据

           3)将请求的数据与缓存中取出的数据做比较

           4)不存在序号,则将请求的记录存入数据库中,如果存在,则给出相应提示

4)编写scala实体

           1)目录文件

                   2EtradeSeq中内容如下:

5)逻辑实现与编写BidsSeqUtils工具类,代码如下:

 

 

6BidsSeqUtils工具类的使用

1)在系统启动时,在schedule中调用addSeqToRedis方法来实现将数据从数据库中查出来,并且存入redis缓存中

如下图所示:

2)数据验证时,

EtradeBatchCreateBidsAction中验证seq

3)当校验不通过时,说明用户请求的数据在缓存与数据库中不存在,所以调用updateEtradeSeqList方法,在更新缓存的同时,更新数据库。

 

(7)测试:

1)始化redis时,通过设置断点来测试,测试的结果是,能够通过key来获得value。

2)在验证seq时,通过api测试界面来测试,测试的结果是,输入数值,返回success

 

 

展开阅读全文

没有更多推荐了,返回首页