mirror of
https://gitee.com/mirrors/Spring-Cloud-Alibaba.git
synced 2021-06-26 13:25:11 +08:00
fix thread-unsafe about SimpleDateFormat
This commit is contained in:
parent
c3e5e4cafa
commit
6fbb0fb1f4
@ -41,7 +41,12 @@ public class NacosConfigEndpoint {
|
|||||||
|
|
||||||
private final NacosRefreshHistory refreshHistory;
|
private final NacosRefreshHistory refreshHistory;
|
||||||
|
|
||||||
private DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
private ThreadLocal<DateFormat> dateFormat = new ThreadLocal<DateFormat>(){
|
||||||
|
@Override
|
||||||
|
protected DateFormat initialValue() {
|
||||||
|
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
public NacosConfigEndpoint(NacosConfigProperties properties,
|
public NacosConfigEndpoint(NacosConfigProperties properties,
|
||||||
NacosRefreshHistory refreshHistory) {
|
NacosRefreshHistory refreshHistory) {
|
||||||
@ -60,7 +65,7 @@ public class NacosConfigEndpoint {
|
|||||||
for (NacosPropertySource ps : all) {
|
for (NacosPropertySource ps : all) {
|
||||||
Map<String, Object> source = new HashMap<>(16);
|
Map<String, Object> source = new HashMap<>(16);
|
||||||
source.put("dataId", ps.getDataId());
|
source.put("dataId", ps.getDataId());
|
||||||
source.put("lastSynced", dateFormat.format(ps.getTimestamp()));
|
source.put("lastSynced", dateFormat.get().format(ps.getTimestamp()));
|
||||||
sources.add(source);
|
sources.add(source);
|
||||||
}
|
}
|
||||||
result.put("Sources", sources);
|
result.put("Sources", sources);
|
||||||
|
@ -44,7 +44,12 @@ public class AcmEndpoint {
|
|||||||
|
|
||||||
private final AcmPropertySourceRepository propertySourceRepository;
|
private final AcmPropertySourceRepository propertySourceRepository;
|
||||||
|
|
||||||
private DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
private ThreadLocal<DateFormat> dateFormat = new ThreadLocal<DateFormat>(){
|
||||||
|
@Override
|
||||||
|
protected DateFormat initialValue() {
|
||||||
|
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
public AcmEndpoint(AcmProperties properties, AcmRefreshHistory refreshHistory,
|
public AcmEndpoint(AcmProperties properties, AcmRefreshHistory refreshHistory,
|
||||||
AcmPropertySourceRepository propertySourceRepository) {
|
AcmPropertySourceRepository propertySourceRepository) {
|
||||||
@ -65,7 +70,7 @@ public class AcmEndpoint {
|
|||||||
for (AcmPropertySource ps : all) {
|
for (AcmPropertySource ps : all) {
|
||||||
Map<String, Object> source = new HashMap<>();
|
Map<String, Object> source = new HashMap<>();
|
||||||
source.put("dataId", ps.getDataId());
|
source.put("dataId", ps.getDataId());
|
||||||
source.put("lastSynced", dateFormat.format(ps.getTimestamp()));
|
source.put("lastSynced", dateFormat.get().format(ps.getTimestamp()));
|
||||||
sources.add(source);
|
sources.add(source);
|
||||||
}
|
}
|
||||||
runtime.put("sources", sources);
|
runtime.put("sources", sources);
|
||||||
|
@ -30,10 +30,15 @@ public class AcmRefreshHistory {
|
|||||||
|
|
||||||
private LinkedList<Record> records = new LinkedList<>();
|
private LinkedList<Record> records = new LinkedList<>();
|
||||||
|
|
||||||
private DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
private ThreadLocal<DateFormat> dateFormat = new ThreadLocal<DateFormat>(){
|
||||||
|
@Override
|
||||||
|
protected DateFormat initialValue() {
|
||||||
|
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
public void add(String dataId, String md5) {
|
public void add(String dataId, String md5) {
|
||||||
records.addFirst(new Record(dateFormat.format(new Date()), dataId, md5));
|
records.addFirst(new Record(dateFormat.get().format(new Date()), dataId, md5));
|
||||||
if (records.size() > MAX_SIZE) {
|
if (records.size() > MAX_SIZE) {
|
||||||
records.removeLast();
|
records.removeLast();
|
||||||
}
|
}
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.springframework.cloud.alicloud.sms.base;
|
package org.springframework.cloud.alicloud.sms.base;
|
||||||
|
|
||||||
|
import java.text.DateFormat;
|
||||||
import java.text.ParseException;
|
import java.text.ParseException;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
@ -158,11 +159,15 @@ public class DefaultAlicomMessagePuller {
|
|||||||
if (!polling) {
|
if (!polling) {
|
||||||
popMsg = queue.popMessage();
|
popMsg = queue.popMessage();
|
||||||
if (debugLogOpen) {
|
if (debugLogOpen) {
|
||||||
SimpleDateFormat format = new SimpleDateFormat(
|
ThreadLocal<DateFormat> format = new ThreadLocal<DateFormat>(){
|
||||||
"yyyy-MM-dd HH:mm:ss");
|
@Override
|
||||||
|
protected DateFormat initialValue() {
|
||||||
|
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||||
|
}
|
||||||
|
};
|
||||||
log.info("PullMessageTask_popMessage:"
|
log.info("PullMessageTask_popMessage:"
|
||||||
+ Thread.currentThread().getName() + "-popDone at "
|
+ Thread.currentThread().getName() + "-popDone at "
|
||||||
+ "," + format.format(new Date()) + " msgSize="
|
+ "," + format.get().format(new Date()) + " msgSize="
|
||||||
+ (popMsg == null ? 0 : popMsg.getMessageId()));
|
+ (popMsg == null ? 0 : popMsg.getMessageId()));
|
||||||
}
|
}
|
||||||
if (popMsg == null) {
|
if (popMsg == null) {
|
||||||
|
@ -77,7 +77,7 @@ public class TokenGetterForAlicom {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private TokenForAlicom getTokenFromRemote(String messageType)
|
private TokenForAlicom getTokenFromRemote(String messageType)
|
||||||
throws ServerException, ClientException, ParseException {
|
throws ClientException, ParseException {
|
||||||
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||||
df.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
|
df.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
|
||||||
QueryTokenForMnsQueueRequest request = new QueryTokenForMnsQueueRequest();
|
QueryTokenForMnsQueueRequest request = new QueryTokenForMnsQueueRequest();
|
||||||
@ -109,7 +109,7 @@ public class TokenGetterForAlicom {
|
|||||||
|
|
||||||
public TokenForAlicom getTokenByMessageType(String messageType, String queueName,
|
public TokenForAlicom getTokenByMessageType(String messageType, String queueName,
|
||||||
String mnsAccountEndpoint)
|
String mnsAccountEndpoint)
|
||||||
throws ServerException, ClientException, ParseException {
|
throws ClientException, ParseException {
|
||||||
TokenForAlicom token = tokenMap.get(messageType);
|
TokenForAlicom token = tokenMap.get(messageType);
|
||||||
Long now = System.currentTimeMillis();
|
Long now = System.currentTimeMillis();
|
||||||
if (token == null || (token.getExpireTime() - now) < bufferTime) {// 过期时间小于2分钟则重新获取,防止服务器时间误差
|
if (token == null || (token.getExpireTime() - now) < bufferTime) {// 过期时间小于2分钟则重新获取,防止服务器时间误差
|
||||||
|
Loading…
x
Reference in New Issue
Block a user