|  |  | @@ -14,12 +14,12 @@ public class WxMsgIdInMemoryDuplicateChecker implements WxMsgIdDuplicateChecker | 
		
	
		
			
			|  |  |  | /** | 
		
	
		
			
			|  |  |  | * 一个消息ID在内存的过期时间:15秒 | 
		
	
		
			
			|  |  |  | */ | 
		
	
		
			
			|  |  |  | private final Long TIME_TO_LIVE; | 
		
	
		
			
			|  |  |  | private final Long timeToLive; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | /** | 
		
	
		
			
			|  |  |  | * 每隔多少周期检查消息ID是否过期:5秒 | 
		
	
		
			
			|  |  |  | */ | 
		
	
		
			
			|  |  |  | private final Long CLEAR_PERIOD; | 
		
	
		
			
			|  |  |  | private final Long clearPeriod; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | private final ConcurrentHashMap<Long, Long> msgId2Timestamp = new ConcurrentHashMap<Long, Long>(); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
	
		
			
				|  |  | @@ -31,8 +31,8 @@ public class WxMsgIdInMemoryDuplicateChecker implements WxMsgIdDuplicateChecker | 
		
	
		
			
			|  |  |  | * </pre> | 
		
	
		
			
			|  |  |  | */ | 
		
	
		
			
			|  |  |  | public WxMsgIdInMemoryDuplicateChecker() { | 
		
	
		
			
			|  |  |  | this.TIME_TO_LIVE = 15 * 1000l; | 
		
	
		
			
			|  |  |  | this.CLEAR_PERIOD = 5 * 1000l; | 
		
	
		
			
			|  |  |  | this.timeToLive = 15 * 1000l; | 
		
	
		
			
			|  |  |  | this.clearPeriod = 5 * 1000l; | 
		
	
		
			
			|  |  |  | this.start(); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
	
		
			
				|  |  | @@ -42,8 +42,8 @@ public class WxMsgIdInMemoryDuplicateChecker implements WxMsgIdDuplicateChecker | 
		
	
		
			
			|  |  |  | * @param clearPeriod 每隔多少周期检查消息ID是否过期:毫秒 | 
		
	
		
			
			|  |  |  | */ | 
		
	
		
			
			|  |  |  | public WxMsgIdInMemoryDuplicateChecker(Long timeToLive, Long clearPeriod) { | 
		
	
		
			
			|  |  |  | this.TIME_TO_LIVE = timeToLive; | 
		
	
		
			
			|  |  |  | this.CLEAR_PERIOD = clearPeriod; | 
		
	
		
			
			|  |  |  | this.timeToLive = timeToLive; | 
		
	
		
			
			|  |  |  | this.clearPeriod = clearPeriod; | 
		
	
		
			
			|  |  |  | this.start(); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
	
		
			
				|  |  | @@ -53,10 +53,10 @@ public class WxMsgIdInMemoryDuplicateChecker implements WxMsgIdDuplicateChecker | 
		
	
		
			
			|  |  |  | public void run() { | 
		
	
		
			
			|  |  |  | try { | 
		
	
		
			
			|  |  |  | while (true) { | 
		
	
		
			
			|  |  |  | Thread.sleep(CLEAR_PERIOD); | 
		
	
		
			
			|  |  |  | Thread.sleep(clearPeriod); | 
		
	
		
			
			|  |  |  | Long now = System.currentTimeMillis(); | 
		
	
		
			
			|  |  |  | for (Map.Entry<Long, Long> entry : msgId2Timestamp.entrySet()) { | 
		
	
		
			
			|  |  |  | if (now - entry.getValue() > TIME_TO_LIVE) { | 
		
	
		
			
			|  |  |  | if (now - entry.getValue() > timeToLive) { | 
		
	
		
			
			|  |  |  | msgId2Timestamp.entrySet().remove(entry); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
	
		
			
				|  |  | 
 |