| @@ -53,7 +53,6 @@ import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; | |||||
| * @author Daniel Qian | * @author Daniel Qian | ||||
| */ | */ | ||||
| public class WxMpMessageRouter { | public class WxMpMessageRouter { | ||||
| private static final int DEFAULT_THREAD_POOL_SIZE = 100; | private static final int DEFAULT_THREAD_POOL_SIZE = 100; | ||||
| protected final Logger log = LoggerFactory.getLogger(WxMpMessageRouter.class); | protected final Logger log = LoggerFactory.getLogger(WxMpMessageRouter.class); | ||||
| private final List<WxMpMessageRouterRule> rules = new ArrayList<>(); | private final List<WxMpMessageRouterRule> rules = new ArrayList<>(); | ||||
| @@ -77,9 +76,7 @@ public class WxMpMessageRouter { | |||||
| } | } | ||||
| /** | /** | ||||
| * <pre> | |||||
| * 使用自定义的 {@link ExecutorService} | |||||
| * </pre> | |||||
| * 使用自定义的 {@link ExecutorService}. | |||||
| */ | */ | ||||
| public WxMpMessageRouter(WxMpService wxMpService, ExecutorService executorService) { | public WxMpMessageRouter(WxMpService wxMpService, ExecutorService executorService) { | ||||
| this.wxMpService = wxMpService; | this.wxMpService = wxMpService; | ||||
| @@ -90,9 +87,7 @@ public class WxMpMessageRouter { | |||||
| } | } | ||||
| /** | /** | ||||
| * <pre> | |||||
| * 如果使用默认的 {@link ExecutorService},则系统退出前,应该调用该方法。 | |||||
| * </pre> | |||||
| * 如果使用默认的 {@link ExecutorService},则系统退出前,应该调用该方法. | |||||
| */ | */ | ||||
| public void shutDownExecutorService() { | public void shutDownExecutorService() { | ||||
| this.executorService.shutdown(); | this.executorService.shutdown(); | ||||
| @@ -230,23 +225,26 @@ public class WxMpMessageRouter { | |||||
| } | } | ||||
| public WxMpXmlOutMessage route(final WxMpXmlMessage wxMessage) { | public WxMpXmlOutMessage route(final WxMpXmlMessage wxMessage) { | ||||
| return this.route(wxMessage, new HashMap<String, Object>()); | |||||
| return this.route(wxMessage, new HashMap<String, Object>(2)); | |||||
| } | } | ||||
| protected boolean isMsgDuplicated(WxMpXmlMessage wxMessage) { | |||||
| private boolean isMsgDuplicated(WxMpXmlMessage wxMessage) { | |||||
| StringBuilder messageId = new StringBuilder(); | StringBuilder messageId = new StringBuilder(); | ||||
| if (wxMessage.getMsgId() == null) { | if (wxMessage.getMsgId() == null) { | ||||
| messageId.append(wxMessage.getCreateTime()) | messageId.append(wxMessage.getCreateTime()) | ||||
| .append("-").append(wxMessage.getFromUser()) | .append("-").append(wxMessage.getFromUser()) | ||||
| .append("-").append(StringUtils.trimToEmpty(wxMessage.getEventKey())) | .append("-").append(StringUtils.trimToEmpty(wxMessage.getEventKey())) | ||||
| .append("-").append(StringUtils.trimToEmpty(wxMessage.getEvent())) | |||||
| ; | |||||
| .append("-").append(StringUtils.trimToEmpty(wxMessage.getEvent())); | |||||
| } else { | } else { | ||||
| messageId.append(wxMessage.getMsgId()) | messageId.append(wxMessage.getMsgId()) | ||||
| .append("-").append(wxMessage.getCreateTime()) | .append("-").append(wxMessage.getCreateTime()) | ||||
| .append("-").append(wxMessage.getFromUser()); | .append("-").append(wxMessage.getFromUser()); | ||||
| } | } | ||||
| if (StringUtils.isNotEmpty(wxMessage.getUserCardCode())) { | |||||
| messageId.append("-").append(wxMessage.getUserCardCode()); | |||||
| } | |||||
| return this.messageDuplicateChecker.isDuplicate(messageId.toString()); | return this.messageDuplicateChecker.isDuplicate(messageId.toString()); | ||||
| } | } | ||||
| @@ -254,12 +252,10 @@ public class WxMpMessageRouter { | |||||
| /** | /** | ||||
| * 对session的访问结束. | * 对session的访问结束. | ||||
| */ | */ | ||||
| protected void sessionEndAccess(WxMpXmlMessage wxMessage) { | |||||
| private void sessionEndAccess(WxMpXmlMessage wxMessage) { | |||||
| InternalSession session = ((InternalSessionManager) this.sessionManager).findSession(wxMessage.getFromUser()); | InternalSession session = ((InternalSessionManager) this.sessionManager).findSession(wxMessage.getFromUser()); | ||||
| if (session != null) { | if (session != null) { | ||||
| session.endAccess(); | session.endAccess(); | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||