https://www.cnblogs.com/qianxiaoruofeng/p/15659264.html
消息隊列是計算機中不可或缺的一個重要角色,用好mq 能給我們的工作減少更多的工作量,提高辦公的效率。
什么是mqtt ,先了解一下。
https://mqtt.org/
https://www.emqx.com/zh
下載服務端程序、和客戶端的程序
serve 端,今天我們用的是windows版本的mosquitto試驗
https://mosquitto.org/download/
你也可以選擇emqx作為更多的集成支持的mqtt
https://www.emqx.com/zh/try?product=broker
安裝 mqtt server 必須以管理員身份安裝,否者后面沒法使用啟動不成功。
上圖是mosquitto 安裝成功后目錄結構
目錄下面有幾個安裝閱讀的文件,你一看便知文件的作用
配置mqtt
mqtt 支持默認不配置可以啟動,但是生產中不安全,存在數據泄露的風險,所以我們就講一下他的配置。
我們就在這里講最低的一個賬戶密碼配置,不讓所有人都能登錄。
在mosquitto.conf配置文件 設置不允許任何人登錄,且設置登錄用戶和指定密碼文件還要設置權限acl文件
allow_anonymous允許匿名
password_file密碼文件
acl_file訪問控制列表
allow_anonymous false
password_file C:/Program Files/mosquitto/pwfile.example
user mac
acl_file C:/Program Files/mosquitto/acl
在pwfile 中添加用戶,
指令如下:
#mosquitto_passwd -c pwfile mac
你要輸入你電腦的賬號密碼,否者這個borker設備無法登錄。
輸入兩次之后正常顯示之后,說明你的用戶配置正確
密碼文件里面就多出這樣一行。
acl 文件是這樣的。
然后通過配置文件啟動mqttserver
mosquitto -c mosquitto.conf
這樣啟動mqttserver
這里可能會多次權限不夠什么的,你就要主義配置文件是否正確了。
也可以直接點擊exe啟動不帶參數啟動,那樣不安全,很多時候會出現閃退,你要注意。
下面是設置mqtt 訂閱,
用的是這個程序
#mosquitto_sub -h 192.168.1.100 -t mtopic -u username -P passwd
下面是設置mqtt 發布,
#mosquitto_pub -h 192.168.1.100 -t mtopic -u username -P passwd -m "test"
我們來mqtt 工具里面來設置一下,做訂閱和發布的事情,it's creazy 。
這里要保持客戶端id不一樣,否者這個本機一台機器就會一個上線,一個下線互相搶斷。
關於topic 設置
一個客戶端訂閱,一個客戶端發布,就可以看到,消息流的產生了。
還要注意一個topic 設置的格式。
(1)主題層級分隔符 / : 用於分割主題層級,/分割后的主題,這是消息主題層級設計中很重要的符號。 比方說: aaa/bbb和 aaa/bbb/ccc 和aaa/bbb/ccc/ddd ,這樣的消息主題格式,是一個層層遞進的關系,可通過多層通配符同時匹配兩者,或者單層通配符只匹配一個。 這在現實場景中,可以應用到:公司的部門層級推送、國家城市層級推送等包含層級關系的場景。
(2) 單層通配符 +: 單層通配符只能匹配一層主題。比如: aaa/+ 可以匹配 aaa/bbb ,但是不能匹配aaa/bbb/ccc。 單獨的+號可以匹配單層的所有推送;
(3) 多層通配符 #: 多層通配符可以匹配於多層主題。比如: aaa/# 不但可以匹配aaa/bbb,還可以匹配aaa/bbb/ccc/ddd。 也就是說,多層通配符可以匹配符合通配符之前主題層級的所有子集主題。單獨的#匹配所有的消息主題.
注: 單層通配符和多層通配符只能用於訂閱(subscribe)消息而不能用於發布(publish)消息,層級分隔符兩種情況下均可使用。
你們都知道mqtt協議最基本的思想就是發布訂閱,也就是一個設備發布多個設備訂閱。
設備發布者發布一個主題,其它設備經過訂閱能夠得到主題發布者發送的消息。
網關做為發布者發布兩個主題:
通配:dev/用戶ID/公司ID/項目ID/設備MAC/#
主題一:dev/用戶ID/公司ID/項目ID/設備MAC/0
該主題為設備訂閱的主題,用來發送設備信息給用戶,只能為指定設備發布
主題二:dev/用戶ID/公司ID/項目ID/設備MAC/1
該主題為設備訂閱的主題,用戶用來發送信息給設備,該主題任何用戶可發布消息
這里的 “設備MAC” 地址是惟一的。web
設備運行后,首先,訂閱主題二
而后:
利用主題一,定時發布消息。
利用主題二,不斷的接收消息。svg
用戶運行后,首先,訂閱主題一
而后利用主題一,接收設備發送的消息。
利用主題二,發送控制信息。xm
參考文檔:
https://mosquitto.org/documentation/
https://www.cnblogs.com/saryli/p/9818721.html
https://www.jianshu.com/p/d96239675831
https://www.shangmayuan.com/a/59eb0278bba241878c28fbf6.html