[杂记]Weixin4j-server处理模式

xiaoxiao2021-03-01  28

maven上比较老牌的JAVA微信组件。com.foxinmy.weixin4j

版本(gradle):     api 'com.foxinmy:weixin4j-base:1.8.2'     api 'com.foxinmy:weixin4j-mp:1.8.2'     api 'com.foxinmy:weixin4j-server:1.1.9'  

最近使用它的服务组件,顺便大概过了下处理的模式,这里做点记录,以便以后做spring整合再备查:

weixin4j的服务器消息server采用nettry做单独的服务netty的核心ChannelPipeline构成如下,做了点小记录: WeixinServerInitializer里的关键代码: pipeline.addLast(new HttpServerCodec()); pipeline.addLast(new HttpObjectAggregator(65536)); pipeline.addLast(messageDecoder); //解析请求的XML,将所有的请求包括XML的参数处理为WeixinRequest pipeline.addLast(new WeixinResponseEncoder()); //处理微信要求的XML格式返回数据 pipeline.addLast(new SingleResponseEncoder()); //处理简单类型的返回数据,签名验证等使用 pipeline.addLast(new WeixinRequestHandler(messageDispatcher)); //业务分发器

 

WeixinRequestHandler是一个分发处理器,在WeixinServerBootstrap类里导入了所有的处理handler public void startup(int bossThreads, int workerThreads, final int serverPort) { messageDispatcher.setMessageHandlerList(messageHandlerList); messageDispatcher.setMessageInterceptorList(messageInterceptorList);

自己调用public方法添加handler  

/** * 添加一个或者多个消息处理器 * * @param messageHandler * 消息处理器 * @return */ public WeixinServerBootstrap addHandler(WeixinMessageHandler... messageHandler) { if (messageHandler == null) { throw new IllegalArgumentException("messageHandler not be null"); } messageHandlerList.addAll(Arrays.asList(messageHandler)); return this; }

MessageHandlerAdapter里使用泛型标记为各种消息类型的处理器,代码不方便,直接截图了

 

转载请注明原文地址: https://www.6miu.com/read-3650344.html

最新回复(0)