me.chanjar.weixin.mp.api

## 类 WxMpMessageRouter

- java.lang.Object
- - me.chanjar.weixin.mp.api.WxMpMessageRouter

    public class WxMpMessageRouter
    extends Object

     微信消息路由器，通过代码化的配置，把来自微信的消息交给handler处理

     说明：
     1. 配置路由规则时要按照从细到粗的原则，否则可能消息可能会被提前处理
     2. 默认情况下消息只会被处理一次，除非使用 WxMpMessageRouterRule.next()
     3. 规则的结束必须用WxMpMessageRouterRule.end()或者WxMpMessageRouterRule.next()，否则不会生效

     使用方法：
     WxMpMessageRouter router = new WxMpMessageRouter();
     router
       .rule()
           .msgType("MSG_TYPE").event("EVENT").eventKey("EVENT_KEY").content("CONTENT")
           .interceptor(interceptor, ...).handler(handler, ...)
       .end()
       .rule()
           // 另外一个匹配规则
       .end()
     ;

     // 将WxXmlMessage交给消息路由器
     router.route(message);

作者:
  Daniel Qian

### 字段概要

字段
`protected org.slf4j.Logger` `log`

### 构造器概要

构造器
构造器和说明
`WxMpMessageRouter(WxMpService wxMpService)`

### 方法概要

方法
`protected boolean` `isDuplicateMessage(WxMpXmlMessage wxMessage)`
`WxMpXmlOutMessage` `route(WxMpXmlMessage wxMessage)` 处理微信消息
`WxMpMessageRouterRule` `rule()` 开始一个新的Route规则
`protected void` `sessionEndAccess(WxMpXmlMessage wxMessage)` 对session的访问结束
`void` `setExceptionHandler(WxErrorExceptionHandler exceptionHandler)` 设置自定义的`WxErrorExceptionHandler` 如果不调用该方法，默认使用 `LogExceptionHandler`
`void` `setExecutorService(ExecutorService executorService)` 设置自定义的 `ExecutorService` 如果不调用该方法，默认使用 Executors.newFixedThreadPool(100)
`void` `setMessageDuplicateChecker(WxMessageDuplicateChecker messageDuplicateChecker)` 设置自定义的 `WxMessageDuplicateChecker` 如果不调用该方法，默认使用 `WxMessageInMemoryDuplicateChecker`
`void` `setSessionManager(WxSessionManager sessionManager)` 设置自定义的`WxSessionManager` 如果不调用该方法，默认使用 `StandardSessionManager`

### 从类继承的方法 java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### 字段详细资料

#### log

    protected final org.slf4j.Logger log

### 构造器详细资料

#### WxMpMessageRouter

    public WxMpMessageRouter(WxMpService wxMpService)

### 方法详细资料

#### setExecutorService

    public void setExecutorService(ExecutorService executorService)

     设置自定义的 ExecutorService
     如果不调用该方法，默认使用 Executors.newFixedThreadPool(100)

参数:
  `executorService` -

#### setMessageDuplicateChecker

    public void setMessageDuplicateChecker(WxMessageDuplicateChecker messageDuplicateChecker)

     设置自定义的 WxMessageDuplicateChecker
     如果不调用该方法，默认使用 WxMessageInMemoryDuplicateChecker

参数:
  `messageDuplicateChecker` -

#### setSessionManager

    public void setSessionManager(WxSessionManager sessionManager)

     设置自定义的WxSessionManager
     如果不调用该方法，默认使用 StandardSessionManager

参数:
  `sessionManager` -

#### setExceptionHandler

    public void setExceptionHandler(WxErrorExceptionHandler exceptionHandler)

     设置自定义的WxErrorExceptionHandler
     如果不调用该方法，默认使用 LogExceptionHandler

参数:
  `exceptionHandler` -

#### rule

    public WxMpMessageRouterRule rule()

开始一个新的Route规则

#### route

    public WxMpXmlOutMessage route(WxMpXmlMessage wxMessage)

处理微信消息

参数:
  `wxMessage` -

#### isDuplicateMessage

    protected boolean isDuplicateMessage(WxMpXmlMessage wxMessage)

#### sessionEndAccess

    protected void sessionEndAccess(WxMpXmlMessage wxMessage)

对session的访问结束

参数:
  `wxMessage` -