issue #66 微信消息去重功能

This commit is contained in:
Daniel Qian
2015-01-21 15:15:47 +08:00
parent 5ff2ab6436
commit d3c9679eec
3 changed files with 14 additions and 17 deletions

View File

@@ -9,7 +9,7 @@ import java.util.concurrent.ConcurrentHashMap;
* 将每个消息id保存在内存里每隔5秒清理已经过期的消息id每个消息id的过期时间是15秒 * 将每个消息id保存在内存里每隔5秒清理已经过期的消息id每个消息id的过期时间是15秒
* </pre> * </pre>
*/ */
public class WxMsgIdInMemoryDuplicateChecker implements WxMsgIdDuplicateChecker { public class WxMsgIdMemoryDuplicateChecker implements WxMsgIdDuplicateChecker {
/** /**
* 一个消息ID在内存的过期时间15秒 * 一个消息ID在内存的过期时间15秒
@@ -30,7 +30,7 @@ public class WxMsgIdInMemoryDuplicateChecker implements WxMsgIdDuplicateChecker
* 每隔多少周期检查消息ID是否过期5秒 * 每隔多少周期检查消息ID是否过期5秒
* </pre> * </pre>
*/ */
public WxMsgIdInMemoryDuplicateChecker() { public WxMsgIdMemoryDuplicateChecker() {
this.timeToLive = 15 * 1000l; this.timeToLive = 15 * 1000l;
this.clearPeriod = 5 * 1000l; this.clearPeriod = 5 * 1000l;
this.start(); this.start();
@@ -41,7 +41,7 @@ public class WxMsgIdInMemoryDuplicateChecker implements WxMsgIdDuplicateChecker
* @param timeToLive 一个消息ID在内存的过期时间毫秒 * @param timeToLive 一个消息ID在内存的过期时间毫秒
* @param clearPeriod 每隔多少周期检查消息ID是否过期毫秒 * @param clearPeriod 每隔多少周期检查消息ID是否过期毫秒
*/ */
public WxMsgIdInMemoryDuplicateChecker(Long timeToLive, Long clearPeriod) { public WxMsgIdMemoryDuplicateChecker(Long timeToLive, Long clearPeriod) {
this.timeToLive = timeToLive; this.timeToLive = timeToLive;
this.clearPeriod = clearPeriod; this.clearPeriod = clearPeriod;
this.start(); this.start();

View File

@@ -3,15 +3,12 @@ package me.chanjar.weixin.common.util;
import org.testng.Assert; import org.testng.Assert;
import org.testng.annotations.Test; import org.testng.annotations.Test;
/**
* Created by qianjia on 15/1/20.
*/
@Test @Test
public class WxMsgIdInMemoryDuplicateCheckerTest { public class WxMsgIdMemoryDuplicateCheckerTest {
public void test() throws InterruptedException { public void test() throws InterruptedException {
Long[] msgIds = new Long[] { 1l, 2l, 3l, 4l, 5l, 6l, 7l, 8l }; Long[] msgIds = new Long[] { 1l, 2l, 3l, 4l, 5l, 6l, 7l, 8l };
WxMsgIdInMemoryDuplicateChecker checker = new WxMsgIdInMemoryDuplicateChecker(2000l, 1000l); WxMsgIdMemoryDuplicateChecker checker = new WxMsgIdMemoryDuplicateChecker(2000l, 1000l);
// 第一次检查 // 第一次检查
for (Long msgId : msgIds) { for (Long msgId : msgIds) {

View File

@@ -7,7 +7,7 @@
<class name="me.chanjar.weixin.common.bean.WxErrorTest"/> <class name="me.chanjar.weixin.common.bean.WxErrorTest"/>
<class name="me.chanjar.weixin.common.bean.WxMenuTest"/> <class name="me.chanjar.weixin.common.bean.WxMenuTest"/>
<class name="me.chanjar.weixin.common.util.crypto.WxCryptUtilTest"/> <class name="me.chanjar.weixin.common.util.crypto.WxCryptUtilTest"/>
<class name="me.chanjar.weixin.common.util.WxMsgIdInMemoryDuplicateCheckerTest" /> <class name="me.chanjar.weixin.common.util.WxMsgIdMemoryDuplicateCheckerTest"/>
</classes> </classes>
</test> </test>
</suite> </suite>