();
@@ -60,24 +59,22 @@ public class WxMpMessageRouter {
private ExecutorService executorService;
- private WxMsgIdDuplicateChecker wxMsgIdDuplicateChecker;
+ private WxMessageDuplicateChecker wxMessageDuplicateChecker;
- protected WxSessionManager sessionManager = new SessionManagerImpl();
+ private WxSessionManager sessionManager;
public WxMpMessageRouter(WxMpService wxMpService) {
this.wxMpService = wxMpService;
this.executorService = Executors.newFixedThreadPool(DEFAULT_THREAD_POOL_SIZE);
- this.wxMsgIdDuplicateChecker = new WxMsgIdMemoryDuplicateChecker();
- }
-
- public WxMpMessageRouter(WxMpService wxMpService, int threadPoolSize) {
- this.wxMpService = wxMpService;
- this.executorService = Executors.newFixedThreadPool(threadPoolSize);
- this.wxMsgIdDuplicateChecker = new WxMsgIdMemoryDuplicateChecker();
+ this.wxMessageDuplicateChecker = new WxMessageInMemoryDuplicateChecker();
+ this.sessionManager = new SessionManagerImpl();
}
/**
- * 设置自定义的ExecutorService
+ *
+ * 设置自定义的 {@link ExecutorService}
+ * 如果不调用该方法,默认使用 Executors.newFixedThreadPool(100)
+ *
* @param executorService
*/
public void setExecutorService(ExecutorService executorService) {
@@ -85,11 +82,25 @@ public class WxMpMessageRouter {
}
/**
- * 设置自定义的WxMsgIdDuplicateChecker
- * @param wxMsgIdDuplicateChecker
+ *
+ * 设置自定义的 {@link me.chanjar.weixin.common.util.WxMessageDuplicateChecker}
+ * 如果不调用该方法,默认使用 {@link me.chanjar.weixin.common.util.WxMessageInMemoryDuplicateChecker}
+ *
+ * @param wxMessageDuplicateChecker
+ */
+ public void setWxMessageDuplicateChecker(WxMessageDuplicateChecker wxMessageDuplicateChecker) {
+ this.wxMessageDuplicateChecker = wxMessageDuplicateChecker;
+ }
+
+ /**
+ *
+ * 设置自定义的{@link me.chanjar.weixin.common.session.WxSessionManager}
+ * 如果不调用该方法,默认使用 {@linke SessionManagerImpl}
+ *
+ * @param sessionManager
*/
- public void setWxMsgIdDuplicateChecker(WxMsgIdDuplicateChecker wxMsgIdDuplicateChecker) {
- this.wxMsgIdDuplicateChecker = wxMsgIdDuplicateChecker;
+ public void setSessionManager(WxSessionManager sessionManager) {
+ this.sessionManager = sessionManager;
}
/**
@@ -105,7 +116,7 @@ public class WxMpMessageRouter {
* @param wxMessage
*/
public WxMpXmlOutMessage route(final WxMpXmlMessage wxMessage) {
- if (wxMsgIdDuplicateChecker.isDuplicate(wxMessage.getMsgId())) {
+ if (wxMessageDuplicateChecker.isDuplicate(wxMessage.getMsgId())) {
// 如果是重复消息,那么就不做处理
return null;
}
@@ -167,6 +178,10 @@ public class WxMpMessageRouter {
return res;
}
+ /**
+ * 对session的访问结束
+ * @param wxMessage
+ */
protected void sessionEndAccess(WxMpXmlMessage wxMessage) {
WxSession session = sessionManager.getSession(wxMessage.getFromUserName(), false);
if (session != null) {