本章讲解内容主要如下:
1.用户发起请求到微信服务器,微信服务器会向开发者这里发送请求,如果微信服务器在五秒内收不到响应会断掉链接,并且重新发起请求,总共重试三次。
2.开发者这里如果接收到请求,会从数据库中获取到回应信息并返回,如果五秒内没有返回,会再次接收到微信服务器发起的请求,这时需要进行排重操作。
3.我们会在一个排重类中保存FromUserName和CreateTime(这两个字段是用来做排重操作的),curTime(这个字段是用来做清空操作的,在每隔一段时间需要对信息做一次清空,要不然会产生大量的数据),rel(这个字段是用来存储返回信息的,用来假设网络出现问题,第一次没有响应成功,第二次直接从排重类中获取到rel并且返回,不用再次去数据库获取,加快速度)。
4.在每一次接受到请求,开发者会把请求信息和将从数据库中获取到的返回信息存储到排重类列表中,如果出现网络问题,没有返回给微信服务器,这时微信服务器会再次发送请求,开发者会在排重列表中查找是否有相同FromUserName和CreateTime的请求信息,如果有,将rel信息返回给微信服务器,如果没有,则进行重新获取。
5.排重类列表要由一个job进行清空操作,如果微信服务器的请求出现问题,会每隔五秒发送一次,总共发送三次,所以要当前时间减去排重列表中存储的时间至少要15秒以上才能进行清空。