二次封裝MQTT開源組件 moquette

什麼是moquette

moquette是一款開源的消息代理,整個系統基於java開發,以netty爲基礎完整實現了MQTT協議的。Githup地址:https://github.com/andsel/moquette

封裝的目的

單純靠moquette直接使用到項目上確實有些不太好用,通過需求做一定量的封裝使用更方便

下面開始對moquette的封裝做一定的記錄

封裝的內容

1.封裝主要涉及內容有跟隨SpringBoot啓動同時啓動mqtt服務器

2.封裝服務器對客戶端發送消息功能、封裝判斷客戶端是否在線、封裝服務器向設備發送消息並獲取返回值

 

目錄:

    java目錄下:

            config: 配置類文件

            handler: 客戶端連接和消息處理類文件

            server: 封裝了moquette的消息發送類

            utils: 需要使用到的工具類

    resources目錄下:

            mqtt: mqtt服務的端口、賬號、祕密等配置信息

配置類文件:

MqttBrokerConfiguration.java:創建moquette的Server在Spring自動注入對象

MqttBrokerRunConfiguration.java:mqtt服務隨SpringBoot項目啓動配置類

MqttCustomConfig.java:管理mqtt需要使用到的Topic

客戶端連接處理類:

下面2個類都是處理客戶端的連接、斷開連接、接收客戶端消息等事件功能,主要區分不同的使用場景,主要都是實現了moquette提供的 AbstractInterceptHandler類

發送消息到客戶端類:

使用說明:

1.接收客戶端數據API:

實現AbstractInterceptHandler類重寫onPublish函數就能通過onPublish函數接收客戶端的消息。

2.判斷客戶端是否在線API

MqttServer.isOnline(clientId)

3.發送消息到客戶端

此方法適用設備提供了接口與參數類型數量等消息發送,並且會獲得對應的返回值,但是需要客戶端處理完數據之後再向服務器推送一條特定topic的消息,雙方約定好消息topic

MqttServer.luatInvoke(clientId,apiTag,params)

clientId:客戶端ID

apiTag:客戶端接口名稱

params:參數

此方法適用於客戶端沒提供接口等消息發送,並且會獲得對應的返回值,但是需要客戶端處理完數據之後再向服務器推送一條特定topic的消息,雙方約定好消息topic

MqttServer.pubAndSub(clientId,rrpcCmd,topicPub,topicSub)

clientId:客戶端ID

rrpcCmd:發送的消息

topicPub:客戶端訂閱的topic

topicSub:客戶端返回消息發送的topic

MQTT客戶端通過TCP協議連接服務器,向服務器發送消息,服務器的AbstractInterceptHandler.onPublish(msg)接口能接收任何從各個客戶端發送的消息。同時客戶端需要監聽回調函數,保證接收到服務器的消息。MQTT服務器向客戶端發送消息之後有8秒鐘時間等待客戶端發佈指定topic消息,服務器接收到的時候把它當成一個返回值處理

封裝後的代碼路徑:https://gitee.com/winfongs/mqtt

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章