第三方服务器不在响应,服务器是怎样响应请求的?

小弟最近在改后端项目,但出了个 bug 又解决不了,我觉得是我的后端知识太欠缺了,特来这里请教。

流程是这样的,前端有上送信息,接口收到信息后,用收到的部分信息再去第三方接口请求信息,把两部分合起来存储。

收到的信息中有一部分是用户ID(绝不重复),我用这个 ID + 收到信息的时刻(精确到秒)做 md5,生成一个唯一的序列号作为主键。

但是有些时候是上传失败的,日志是这么记录的Could not execute JDBC batch update …… Caused by: java.sql.BatchUpdateException: ORA-00001: unique constraint (SIT_QDYY.SYS_C0010324) violated

我看了下日志,有两条一模一样的信息,按照我上面说的生成序列号的方法,这样肯定会重复。我和前端确认了下,说是不会有一秒钟上传两次的情况,所以我想是不是我收到信息后的网络请求比较耗时导致的(再想不出别的原因了)?

而且,每一条上传信息不是按顺序处理的,比如说,接口收到了 A 信息,然后解析,打印日志,还没存下来,B 信息的日志就被记录下来了,后面再是用 A 的信息请求第三方接口,存储,等等

我的猜测:

服务器是多线程的,每时每刻都在处理请求,而用 A 请求的数据再去请求第三方接口比较耗时,所以 B 请求来到以后,就去处理 B ,另开一个线程去第三方接口获取 A 相关的数据(这里都是猜测,而且和我那个 bug 有啥关系也不清楚)?

项目用的是 Struts2 + Hibernate + Oracle,部署在 Weblogic 上。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值