44import me .chanjar .weixin .common .session .SessionManagerImpl ;
55import me .chanjar .weixin .common .session .WxSession ;
66import me .chanjar .weixin .common .session .WxSessionManager ;
7- import me .chanjar .weixin .common .util .WxMsgIdDuplicateChecker ;
8- import me .chanjar .weixin .common .util .WxMsgIdMemoryDuplicateChecker ;
7+ import me .chanjar .weixin .common .util .WxMessageDuplicateChecker ;
8+ import me .chanjar .weixin .common .util .WxMessageInMemoryDuplicateChecker ;
99import me .chanjar .weixin .mp .bean .WxMpXmlMessage ;
1010import me .chanjar .weixin .mp .bean .WxMpXmlOutMessage ;
1111import org .slf4j .Logger ;
1212import org .slf4j .LoggerFactory ;
1313
14- import javax .swing .text .StyledEditorKit ;
1514import java .util .ArrayList ;
1615import java .util .HashMap ;
1716import java .util .List ;
@@ -52,44 +51,56 @@ public class WxMpMessageRouter {
5251
5352 protected final Logger log = LoggerFactory .getLogger (WxMpMessageRouter .class );
5453
55- private static final int DEFAULT_THREAD_POOL_SIZE = 20 ;
54+ private static final int DEFAULT_THREAD_POOL_SIZE = 100 ;
5655
5756 private final List <Rule > rules = new ArrayList <Rule >();
5857
5958 private final WxMpService wxMpService ;
6059
6160 private ExecutorService executorService ;
6261
63- private WxMsgIdDuplicateChecker wxMsgIdDuplicateChecker ;
62+ private WxMessageDuplicateChecker wxMessageDuplicateChecker ;
6463
65- protected WxSessionManager sessionManager = new SessionManagerImpl () ;
64+ private WxSessionManager sessionManager ;
6665
6766 public WxMpMessageRouter (WxMpService wxMpService ) {
6867 this .wxMpService = wxMpService ;
6968 this .executorService = Executors .newFixedThreadPool (DEFAULT_THREAD_POOL_SIZE );
70- this .wxMsgIdDuplicateChecker = new WxMsgIdMemoryDuplicateChecker ();
71- }
72-
73- public WxMpMessageRouter (WxMpService wxMpService , int threadPoolSize ) {
74- this .wxMpService = wxMpService ;
75- this .executorService = Executors .newFixedThreadPool (threadPoolSize );
76- this .wxMsgIdDuplicateChecker = new WxMsgIdMemoryDuplicateChecker ();
69+ this .wxMessageDuplicateChecker = new WxMessageInMemoryDuplicateChecker ();
70+ this .sessionManager = new SessionManagerImpl ();
7771 }
7872
7973 /**
80- * 设置自定义的ExecutorService
74+ * <pre>
75+ * 设置自定义的 {@link ExecutorService}
76+ * 如果不调用该方法,默认使用 Executors.newFixedThreadPool(100)
77+ * </pre>
8178 * @param executorService
8279 */
8380 public void setExecutorService (ExecutorService executorService ) {
8481 this .executorService = executorService ;
8582 }
8683
8784 /**
88- * 设置自定义的WxMsgIdDuplicateChecker
89- * @param wxMsgIdDuplicateChecker
85+ * <pre>
86+ * 设置自定义的 {@link me.chanjar.weixin.common.util.WxMessageDuplicateChecker}
87+ * 如果不调用该方法,默认使用 {@link me.chanjar.weixin.common.util.WxMessageInMemoryDuplicateChecker}
88+ * </pre>
89+ * @param wxMessageDuplicateChecker
90+ */
91+ public void setWxMessageDuplicateChecker (WxMessageDuplicateChecker wxMessageDuplicateChecker ) {
92+ this .wxMessageDuplicateChecker = wxMessageDuplicateChecker ;
93+ }
94+
95+ /**
96+ * <pre>
97+ * 设置自定义的{@link me.chanjar.weixin.common.session.WxSessionManager}
98+ * 如果不调用该方法,默认使用 {@linke SessionManagerImpl}
99+ * </pre>
100+ * @param sessionManager
90101 */
91- public void setWxMsgIdDuplicateChecker ( WxMsgIdDuplicateChecker wxMsgIdDuplicateChecker ) {
92- this .wxMsgIdDuplicateChecker = wxMsgIdDuplicateChecker ;
102+ public void setSessionManager ( WxSessionManager sessionManager ) {
103+ this .sessionManager = sessionManager ;
93104 }
94105
95106 /**
@@ -105,7 +116,7 @@ public Rule rule() {
105116 * @param wxMessage
106117 */
107118 public WxMpXmlOutMessage route (final WxMpXmlMessage wxMessage ) {
108- if (wxMsgIdDuplicateChecker .isDuplicate (wxMessage .getMsgId ())) {
119+ if (wxMessageDuplicateChecker .isDuplicate (wxMessage .getMsgId ())) {
109120 // 如果是重复消息,那么就不做处理
110121 return null ;
111122 }
@@ -167,6 +178,10 @@ public void run() {
167178 return res ;
168179 }
169180
181+ /**
182+ * 对session的访问结束
183+ * @param wxMessage
184+ */
170185 protected void sessionEndAccess (WxMpXmlMessage wxMessage ) {
171186 WxSession session = sessionManager .getSession (wxMessage .getFromUserName (), false );
172187 if (session != null ) {
0 commit comments