1. 程式人生 > >mqtt協議-broker之moqutte源碼研究一

mqtt協議-broker之moqutte源碼研究一

希望 idea topic 簡單 broker 一個 協議 main 詳細講解

mqtt協議的broker有很多,但是java的支持集群的並不多,之前調研過一番,發現moqutte基本滿足需求,就想著基於這個在自己做二次開發。後面會逐漸把自己對moqutte的研究發布出來,希望能給有相同需求的同學一定的參考意義。
github地址:https://github.com/andsel/moquette
一。將代碼倒入idea
找到啟動類
技術分享圖片
啟動報錯,是因為找不到moquette的配置文件
技術分享圖片
跟蹤源碼moquette的配置文件地址是config/moquette.conf
因為咱們是直接啟動的Server類裏面的main方法,而是通過assebely打包的jar包,所有這個位置是沒有配置文件的,但是moquette支持通過啟動參數指定配置文件的位置
技術分享圖片
那就簡單了,把啟動需要的配置文件放到本地的某個地方,再通過啟動參數指定就行了,在idea裏面指定
技術分享圖片
我是放在/data/moquette目錄下
另外idea啟動需要的配置文件再,broker模塊下的config包裏面,或者distribution/src/main/resources
加入之後啟動成功
技術分享圖片

二。配置文件講解
moqutte的配置文件有五個,下面分別講解一個有什麽作用
1.moquette.conf 主配置文件,moquette啟動需要的主要配置都在這裏,包括端口號,認證鑒權,存儲等,後面講解源碼的時候會詳細講解各個參數的意義
2.hazelcast.xml moquette的集群是通過.hazelcast來實現的,不了解的同學可以自行google一下,這裏就不詳細講了

3.password_file.conf 這裏配置的是連接是需要的密碼
4.acl.conf 這裏是各個client對topic的讀寫權限
5.log4j.properties 日誌文件,不多說了

三。客戶端選擇,本人選擇的是eclipse的paha,github地址https://github.com/eclipse/paho.mqtt.java
倒入idea之後找到如下的測試類
技術分享圖片

在moquette的io.moquette.server.netty.NettyMQTTHandler類上的打斷點,重新啟動

啟動paha的測試類,開始測試
技術分享圖片

發現moquette的斷點進來了,說明client到broker的鏈路走通了,後面就可以跟蹤源碼了

技術分享圖片
之所以在這打斷點是因為這是netty與其他應用的接入點,對netty了解的同學應該知道,應用其實只需要實現一個handler,當有數據流的時候,由netty負責回調你的handler。netty是一個非常優秀的nio框架,非常值得我們去仔細的研究,我後面會再出一個netty的源碼研究系列。

mqtt協議-broker之moqutte源碼研究一