天天看點

一文看懂RocketMQ生産者發送消息源碼解析(上)從UT看Producer API

基于最新的release-4.7.1代碼分析。

用戶端是個單獨子產品

一文看懂RocketMQ生産者發送消息源碼解析(上)從UT看Producer API

從UT看Producer API

閱讀源碼,不推薦從入口開始看到底,畢竟你太年輕,把握不住它的底。我們可以帶着問題去研究源碼:Producer是如何發消息的?

推薦從UT用例入手。通過這些小流程,debug檢視關鍵流程即可。

RocketMQ用戶端的Producer的所有測試用例都在DefaultMQProducerTest類,這就很友善我們快速了解Producer。

主要測試用例

一文看懂RocketMQ生産者發送消息源碼解析(上)從UT看Producer API

Producer相關的UML圖

一文看懂RocketMQ生産者發送消息源碼解析(上)從UT看Producer API
  • 門面模式(Facade Pattern)

    給用戶端提供了一個可以通路系統的接口,隐藏系統内部的複雜性。

接口MQProducer就是門面,用戶端隻要使用這個接口就可以通路Producer實作消息發送的相關功能,使用上不必再與其他複雜實作類打交道。

類DefaultMQProducer實作了接口MQProducer,方法實作大多沒有業務邏輯,隻是封裝對其他實作類的方法調用,也可視為是門面。

Producer大部分業務邏輯實作都在類DefaultMQProducerImpl。

有時實作分散在很多内部類,不友善用接口來對外提供服務,就可仿照RocketMQ,使用門面模式隐藏内部實作,對外提供服務。

接口MQAdmin定義了一些中繼資料管理的方法,在消息發送過程會用到。

一文看懂RocketMQ生産者發送消息源碼解析(上)從UT看Producer API

繼續閱讀