1. 职责链:NettyHandler --> NettyServer --> MultiMessageHandler --> HeartbeatHandler
--> AllChannelHandler --> DecoderHandler --> HeaderExChangeHandler
--> requestHandler=new ExchangeHandlerAdapter
2. 处理器:NettyHandler
======>>> 维护客户端与服务端建立连接的 channel,通过ConcurrentMap来做到的。
3. 处理器:NettyServer
======>>> 啥事都没有做,直接传递给下一个消息处理器。
4. 处理器:MultiMessageHandler
======>>> 在接受消息的方法中,判断了当前消息是否是 MultiMessage 也就是 message instanceof MultiMessage。
5. 处理器:HeartbeatHandler
======>>> 更新当前处理器的读写的时间戳。
======>>> 在接受消息的方法中,判断当前消息是否是心跳消息,如果是心跳请求,就查看当前消息是否要响应,如果需要响应就发送一个心跳响应。
6. 处理器:AllChannelHandler
======>>> 启动一个Task,提交到一个无界的线程池。
7. 处理器:DecoderHandler
======>>> 判断该消息是否实现了接口Decodeable,如果实现了就调用方法 decode()。
8. 处理器:HeaderExChangeHandler
======>>> receive方法中会调用发送方法,给客户端返回结果值。
9. 处理器:requestHandler
======>>> 接收消息,判断消息是否是 Invocation。
======>>> 根据Key获取的Invoker,就是目标实例/方法。
======>>> 调用目标方法。
【 DubboProtocolTest.java ====>> 客户端器 ===>> 处理器职责链】
1. 职责链:NettyHandler --> NettyClient --> MultiMessageHandler --> HeartbeatHandler
--> AllChannelHandler --> DecoderHandler --> HeaderExChangeHandler
--> requestHandler=new ExchangeHandlerAdapter
2. 处理器:NettyHandler
======>>> 维护客户端与服务端建立连接的 channel,通过ConcurrentMap来做到的。
3. 处理器:NettyServer
======>>> 啥事都没有做,直接传递给下一个消息处理器。
4. 处理器:MultiMessageHandler
======>>> 在接受消息的方法中,判断了当前消息是否是 MultiMessage 也就是 message instanceof MultiMessage。
5. 处理器:HeartbeatHandler
======>>> 更新当前处理器的读写的时间戳。
======>>> 在接受消息的方法中,判断当前消息是否是心跳消息,如果是心跳请求,就查看当前消息是否要响应,如果需要响应就发送一个心跳响应。
6. 处理器:AllChannelHandler
======>>> 启动一个Task,提交到一个无界的线程池。
7. 处理器:DecoderHandler
======>>> 判断该消息是否实现了接口Decodeable,如果实现了就调用方法 decode()。
8. 处理器:HeaderExChangeHandler
======>>> receive方法中会调用发送方法,给服务器发送响应
9. 处理器:requestHandler
======>>> 接收消息,判断消息是否是 Invocation。
======>>> 根据Key获取的Invoker,就是目标实例/方法。
======>>> 调用目标方法。