silenceper / wechat

WeChat SDK for Go (微信SDK:简单、易用)
https://silenceper.com/wechat/
Apache License 2.0
4.69k stars 1.08k forks source link

fix: 修复缓存失效时,可能会重复获取accessToken的问题 #762

Closed Hatuw closed 6 months ago

Hatuw commented 6 months ago

缓存中间间失效时(如Redis链接断开、失效等情况),从微信服务器获取到accessToken后,因为设置缓存失败,会导致返回为空,此时客户端会认为没有获取到token。 因此缓存设置失效时,也正常设置token,暂时启用缓存,防止获取Token API调用次数耗尽

houseme commented 6 months ago

缓存中间间失效时(如Redis链接断开、失效等情况),从微信服务器获取到accessToken后,因为设置缓存失败,会导致返回为空,此时客户端会认为没有获取到token。 因此缓存设置失效时,也正常设置token,暂时启用缓存,防止获取Token API调用次数耗尽

redis 都异常了,业务还可以正常运行 ?这样处理每次都会去获取接口,只是当前这次返回了结果,单机项目可以在项目内弄个map存起来,多台机器的没办法解决

Hatuw commented 6 months ago

缓存中间间失效时(如Redis链接断开、失效等情况),从微信服务器获取到accessToken后,因为设置缓存失败,会导致返回为空,此时客户端会认为没有获取到token。 因此缓存设置失效时,也正常设置token,暂时启用缓存,防止获取Token API调用次数耗尽

redis 都异常了,业务还可以正常运行 ?这样处理每次都会去获取接口,只是当前这次返回了结果,单机项目可以在项目内弄个map存起来,多台机器的没办法解决

Redis异常建议当作未命中缓存处理,现实中也可能会出现网络抖动的情况,这样会导致调用次数耗尽。 实际上就是发生过,网络抖动导致调用次数耗尽了(此时业务是异常的)。如果当做未命中处理的话,业务会正常,且网络恢复后也不影响

houseme commented 6 months ago

缓存中间间失效时(如Redis链接断开、失效等情况),从微信服务器获取到accessToken后,因为设置缓存失败,会导致返回为空,此时客户端会认为没有获取到token。 因此缓存设置失效时,也正常设置token,暂时启用缓存,防止获取Token API调用次数耗尽

redis 都异常了,业务还可以正常运行 ?这样处理每次都会去获取接口,只是当前这次返回了结果,单机项目可以在项目内弄个map存起来,多台机器的没办法解决

Redis异常建议当作未命中缓存处理,现实中也可能会出现网络抖动的情况,这样会导致调用次数耗尽。 实际上就是发生过,网络抖动导致调用次数耗尽了(此时业务是异常的)。如果当做未命中处理的话,业务会正常,且网络恢复后也不影响

建议记录下错误日志,正常返回,不要屏蔽掉

Hatuw commented 6 months ago

缓存中间间失效时(如Redis链接断开、失效等情况),从微信服务器获取到accessToken后,因为设置缓存失败,会导致返回为空,此时客户端会认为没有获取到token。 因此缓存设置失效时,也正常设置token,暂时启用缓存,防止获取Token API调用次数耗尽

redis 都异常了,业务还可以正常运行 ?这样处理每次都会去获取接口,只是当前这次返回了结果,单机项目可以在项目内弄个map存起来,多台机器的没办法解决

Redis异常建议当作未命中缓存处理,现实中也可能会出现网络抖动的情况,这样会导致调用次数耗尽。 实际上就是发生过,网络抖动导致调用次数耗尽了(此时业务是异常的)。如果当做未命中处理的话,业务会正常,且网络恢复后也不影响

建议记录下错误日志,正常返回,不要屏蔽掉

已添加错误信息返回