安裝完成之后,所有配置文件會被放置於/etc/mosquitto/目錄下,其中最重要的就是Mosquitto的配置文件,即mosquitto.conf,以下是詳細的配置參數說明。
# Config file for mosquitto # # See mosquitto.conf(5) for more information. # # Default values are shown, uncomment to change. # # Use the # character to indicate a comment, but only if it is the # very first character on the line. # ================================================================= # General configuration # ================================================================= # 客戶端心跳的時間間隔,重新發送已經發出去的Qos 為1或者2的消息的等待時間 retry_interval 20 # 系統狀態的刷新時間,設置為0表示不刷新 sys_interval 10 #系統資源的回收時間
#清除在內部消息存儲里面的未引用的消息的時間。 #較低的值將占用較少的內存,但處理器時間較長, #越高的值將產生相反的效果。 #設置值為0意味着未引用的消息將以盡可能快的速度處理。 store_clean_interval 10
#服務進程的PID #pid_file /var/run/mosquitto.pid # 以什么用戶啟動 mosquitto,此配置在 windows 下無效,以非 root 運行無效 #user mosquitto #客戶端心跳消息的最大並非數
#當前每個客戶端正在傳輸的Qo1和2消息的最大數量。 #這包括通過握手信息,以及那些正在重試的信息。 #默認為20。設置為0表示無上限。 #設置為1將保證QoS 1 和2的消息按順序傳遞 max_inflight_messages 20 #客戶端心跳消息緩存隊列
#當前正在進行的隊列中Qos 1和2條消息的最大數量。默認為100。 #設置到0表示沒有上限(不推薦)。同樣可參見queue_qos0_messages max_queued_messages 100 #設置為true,當一個持久客戶端被斷開連接時,以Qos為0將消息放到隊列中。 #這些消息受max_queued_messages限制 queue_qos0_messages false #此選項設置被代理允許發布的消息的大小。 #超過這個尺寸的消息將不會被代理接受。 #默認值為0,這意味着所有有效的MQTT消息都被接受。 #MQTT的最大有效大小為268435455字節 message_size_limit 0 # 用於設置客戶端長連接的過期時間,默認永不過期,必須以h d w m y為單位 #分別代表 小時,天,星期,月,念 #persistent_client_expiration # 如果客戶端訂閱了多個重疊的訂閱,例如foo/#和foo/+/baz,然后MQTT期望當代理接 #收到一個與兩個訂閱相匹配的主題的消息時,例如foo/bar/baz,那么客戶端應該只接 #收一次消息。為了滿足這一要求,mosquitto不斷跟蹤發送給客戶的消息。允許重復的 #消息選項允許禁用此行為,如果您有大量的客戶端訂閱相同的主題集合,並且非常關注 #最小化內存使用的情況,那么這個選項可能是有用的。如果你事先知道你的客戶端永不 #會有重疊的訂閱,那么你的客戶必須能夠正確處理重復的信息,即使在Qo = 2的時候, #你的客戶端也必須能夠正確地處理重復的信息 #allow_duplicate_messages false # ================================================================= # Default listener # ================================================================= # 服務綁定的IP地址 #bind_address # 服務綁定的端口號 #port 1883 # 允許的最大連接數,-1表示沒有限制 #max_connections -1
# cafile:CA證書文件 # capath:CA證書目錄 # certfile:PEM證書文件 # keyfile:PEM密鑰文件 #cafile #capath #certfile #keyfile
# 必須提供證書以保證數據安全性 #require_certificate false
# 若require_certificate值為true,use_identity_as_username也必須為true #use_identity_as_username false
# 啟用PSK(Pre-shared-key)支持 #psk_hint
# SSL/TSL加密算法,可以使用“openssl ciphers”命令獲取 # as the output of that command. #ciphers
# ================================================================= # Persistence # =================================================================
# 消息自動保存的間隔時間 #autosave_interval 1800
# 消息自動保存功能的開關 #autosave_on_changes false
# 持久化功能的開關 persistence true
# 持久化DB文件 #persistence_file mosquitto.db
# 持久化DB文件目錄 #persistence_location /var/lib/mosquitto/
# ================================================================= # Logging # =================================================================
# 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
# ================================================================= # Security # =================================================================
# 客戶端ID的前綴限制,可用於保證安全性 #clientid_prefixes
# 允許匿名用戶 #allow_anonymous true
# 用戶/密碼文件,默認格式:username:password #password_file
# PSK格式密碼文件,默認格式:identity:key #psk_file
# pattern write sensor/%u/data # ACL權限配置,常用語法如下: # 用戶限制:user <username> # 話題限制:topic [read|write] <topic> # 正則限制:pattern write sensor/%u/data #acl_file
# ================================================================= # Bridges # =================================================================
# 允許服務之間使用“橋接”模式(可用於分布式部署) #connection <name> #address <host>[:<port>] #topic <topic> [[[out | in | both] qos-level] local-prefix remote-prefix]
# 設置橋接的客戶端ID #clientid
# 橋接斷開時,是否清除遠程服務器中的消息 #cleansession false
# 是否發布橋接的狀態信息 #notifications true
# 設置橋接模式下,消息將會發布到的話題地址 # $SYS/broker/connection/<clientid>/state #notification_topic
# 設置橋接的keepalive數值 #keepalive_interval 60
# 橋接模式,目前有三種:automatic、lazy、once #start_type automatic
# 橋接模式automatic的超時時間 #restart_timeout 30
# 橋接模式lazy的超時時間 #idle_timeout 60
# 橋接客戶端的用戶名 #username
# 橋接客戶端的密碼 #password # bridge_cafile:橋接客戶端的CA證書文件 # bridge_capath:橋接客戶端的CA證書目錄 # bridge_certfile:橋接客戶端的PEM證書文件 # bridge_keyfile:橋接客戶端的PEM密鑰文件 #bridge_cafile #bridge_capath #bridge_certfile #bridge_keyfile
# 自己的配置可以放到以下目錄中 include_dir /etc/mosquitto/conf.d
啟動Mosquitto服務很簡單,直接運行命令行“mosquitto -c /etc/mosquitto/mosquitto.conf -d”即可。另外,Mosquitto是個純異步IO框架,經測試可以輕松處理20000個以上的客戶端連接。當然,實際的最大承載量還和業務的復雜度有比較大的關系。測試的時候不要忘記調整系統的最大連接數和棧大小,比如Linux上可用ulimit -n20000 -s512命令設置你需要的系統參數