更新集群模式多次重复获取微信accessToken的问题

master
OPGame 7 years ago
parent f7d8811a23
commit e563f73f8b

@ -15,7 +15,6 @@ import org.redisson.api.RedissonClient;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Lock;
/**
* WxMaServiceImpl accessToken
@ -40,23 +39,22 @@ public class WxMaServiceClusterImpl extends WxMaServiceImpl {
RLock rLock = redissonClient.getLock(REDISSON_LOCK_PREFIX + ":WxMaServiceCluster:getAccessToken");
boolean doingUpdateAccessToken;
try {
doingUpdateAccessToken = rLock.tryLock(10, TimeUnit.SECONDS);
boolean lockSuccess;
try {
lockSuccess = rLock.tryLock(10, TimeUnit.SECONDS);
} catch (InterruptedException e) {
return this.getWxMaConfig().getAccessToken();
}
if (!doingUpdateAccessToken) {
if (!lockSuccess) {
throw new YamiShopBindException("服务器繁忙,请稍后再试");
}
if (this.getWxMaConfig().isAccessTokenExpired()) {
if (this.getWxMaConfig().isAccessTokenExpired() && !forceRefresh) {
return this.getWxMaConfig().getAccessToken();
}
try {
String url = String.format(WxMaService.GET_ACCESS_TOKEN_URL, this.getWxMaConfig().getAppid(),
this.getWxMaConfig().getSecret());
try {

@ -40,8 +40,9 @@ public class WxMpServiceClusterImpl extends WxMpServiceImpl {
RLock rLock = redissonClient.getLock(REDISSON_LOCK_PREFIX + ":WxMpServiceCluster:getAccessToken");
Object result = null;
try {
boolean doingUpdateAccessToken;
try {
doingUpdateAccessToken = rLock.tryLock(10, TimeUnit.SECONDS);
} catch (InterruptedException e) {
@ -55,10 +56,6 @@ public class WxMpServiceClusterImpl extends WxMpServiceImpl {
if (this.getWxMpConfigStorage().isAccessTokenExpired()) {
return this.getWxMpConfigStorage().getAccessToken();
}
Object result = null;
try {
String url = String.format(WxMpService.GET_ACCESS_TOKEN_URL,
this.getWxMpConfigStorage().getAppId(), this.getWxMpConfigStorage().getSecret());
try {

Loading…
Cancel
Save