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,就是目標實例/方法。
======>>> 調用目標方法。