🆕 提供access_token保存ConcurrentHashMap中的实现,支持高并发。

This commit is contained in:
Brayden Wong 2021-01-16 22:14:38 +08:00 committed by GitHub
parent bb5aadf6be
commit ce62d1c01b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -0,0 +1,45 @@
package me.chanjar.weixin.mp.config.impl;
import lombok.Data;
import me.chanjar.weixin.common.bean.WxAccessToken;
import java.util.concurrent.ConcurrentHashMap;
/**
* @Author: Brayden Wong
* @Date: 2021/1/16
* @Description: 提供accesstoken保存在concurrenthashmap中的实现支持高并发仅限于单机部署
*/
@Data
public class WxMpMapConfigImpl extends WxMpDefaultConfigImpl {
private static final long serialVersionUID = 5311395137835650104L;
private static final ConcurrentHashMap<String, String> CONCURRENT_HASH_MAP = new ConcurrentHashMap<>(1);
private static final String MAP_KEY = "access_token";
@Override
public String getAccessToken() {
return CONCURRENT_HASH_MAP.get(MAP_KEY);
}
@Override
public void setAccessToken(String accessToken) {
CONCURRENT_HASH_MAP.put(MAP_KEY, accessToken);
}
@Override
public void updateAccessToken(WxAccessToken accessToken) {
updateAccessToken(accessToken.getAccessToken(), accessToken.getExpiresIn());
}
@Override
public void updateAccessToken(String accessToken, int expiresInSeconds) {
CONCURRENT_HASH_MAP.put(MAP_KEY, accessToken);
this.expiresTime = System.currentTimeMillis() + (expiresInSeconds - 200) * 1000L;
}
}