mqtt意爲消息隊列遙測傳輸,是IBM開發的一個即時通信協議。因爲其維護一個長鏈接以輕量級低消耗著稱,因此經常使用於移動端消息推送服務開發。vim
mqtt協議控制報文的格式包含三部分:
以固定報頭、可變報頭和有效載荷,其中固定報文頭是全部控制報文都有的,可變報頭和有效載荷都是部分控制報文。
mqtt是二進制的協議,控制字段是精確到Bit級別的,單純這一點就足覺得其在物聯網領域佔據一席之地。mqtt是不支持分包等機制,並不適宜一些數據包特別大的應用場景。緩存
發佈者----發佈消息---->代理-------推送消息----->訂閱者 發佈者----發佈消息---->代理<------訂閱消息-----訂閱者
在mqtt協議中有三種身份:服務器
向訂閱的客戶端轉發應用程序消息網絡
斷開服務器鏈接併發
# sudo yum install epel-release # sudo yum install mosquitto mosquitto-clients # sudo systemctl start mosquitto mqtt默認是以1883端口運行的
mosquitto的配置文件爲/etc/mosquitto/mosquitto.conf/ 1.添加密碼配置而且不容許匿名用戶登陸 # sudo vim /etc/mosquitto/mosquitto.conf allow_anonymous false #不容許匿名登陸 password_file /etc/mosquitto/pwfile #配置用戶密碼文件 acl_file /etc/mosquitto/aclfile # 配置topic和用戶 2.添加用戶信息 # mosquitto_passwd -c /etc/mosquitto/pwfile ceshi # mosquitto_passwd /etc/mosquitto/pwfile ceshi2 分別添加用戶ceshi和ceshi2 3.添加topic和用戶的關係(權限配置) # sudo vim /etc/mosquitto/aclfile # ceshi只能發佈V222爲前綴的主題,訂閱V333開頭的主題 user ceshi topic write V222/# topic read V333/# # ceshi2只能訂閱以V222爲前綴的主題 user ceshi2 topic read V222/# - write:發佈訂閱 - read:接受訂閱 4.啓動 -c :指定配置文件啓動 -d: 後臺運行 mosquitto -c /etc/mosquitto/mosquitto.conf -d 5.測試 發佈訂閱:mosquitto_pub 接受訂閱:mosquitto_sub 參數: -h :服務器主機 -t :指定主題 -u :用戶名 -P : 密碼 -i :客戶端id -m :發佈的消息內容 # mosquitto_sub -h localhost -t "V222" -u ceshi2 -P 123456 # mosquitto_pub -h localhost -t "V222" -m "Hello world" -u ceshi -P 123455
# 系統狀態的刷新時間 # sys_interval 10 # 系統資源的回收時間,0表示儘快處理 # store_clean_interval 10 # 服務進程的pid # pid_file /var/run/mosquitto.pid # 服務進程的系統用戶 # user mosquitto # 客戶端心跳消息的最大併發數 # max_inflight_messages 10 # 客戶端心跳消息緩存隊列 # max_queued_messages 100 # 用於設置客戶端長鏈接的過時時間,默認永不過時 # persistent_client_expiration # 服務綁定的IP地址 # bind_address # 服務綁定的端口 # port 1883 # 消息自動保存的間隔時間 # autosave_interval 1800 # 消息自動保存功能的開關 # autosave_on_changes false # 持久化功能的開關 # persistence true # 持久化DB文件 # persistence_file mosquitto.db # 持久化DB文件目錄 # persistence_location /var/lib/mosquitto/ # 4種日誌模式: stdout、stderr、syslog、topic # none:則表示不記錄日誌 log_dest none # 選擇日誌的級別 # log_type error # log_type warning # log_type notice # log_type information # 是否記錄客戶端鏈接信息 # connection_messages true # 是否記錄日誌時間 # log_timestamp true # 容許匿名用戶 # allow_anonymous false # 用戶/密碼文件,默認格式爲:user/passwd # password_file /etc/mosquitto/passwd