消息队列遥测传输(英语:Message Queuing Telemetry Transport,MQTT)是ISO 标准(ISO/IEC PRF 20922)下基于发布(Publish)/订阅(Subscribe)范式的消息协议,可视为“资料传递的桥梁”。它工作在TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议。为此,它需要一个消息中间件(如HTTP),以解决当前繁重的资料传输协议。
Eclipse Mosquitto 是一款开源(EPL/EDL 许可)消息代理程序,可实现 5.0、3.1.1 和 3.1 版 MQTT 协议。Mosquitto 重量轻,适用于从低功耗单板计算机到完整服务器的所有设备。MQTT 协议提供了一种使用发布/订阅模式进行消息传递的轻量级方法。这使其适用于物联网消息传递,如低功耗传感器或移动设备(如手机、嵌入式计算机或微控制器)。Mosquitto 项目还提供了一个用于实现 MQTT 客户端的 C 库,以及非常流行的 mosquitto_pub 和 mosquitto_sub 命令行 MQTT 客户端。

本文将对在Alpine Linux发行版上通过apk包管理器对mosquitto服务器和客户端进行介绍

  1. 更新apk仓库列表并安装mosquitto服务端和客户端

    apk update
    apk add mosquitto mosquitto-clients
  2. 配置服务器
    编辑mosquitto.conf 修改配置主要找到listener的部分,修改监听ip使得外网可以连接,配置用户

    listener 1883 0.0.0.0
    
    password_file /etc/mosquitto/pwfile
    acl_file /ect/mosquitto/aclfile

    创建一个新的用户admin

    mosquitto_passwd /etc/mosquitto/pwfile admin

    aclfile 访问权限配置文件

    # This affects access control for clients with no username.
    topic read $SYS/#
    
    # This only affects clients with username "roger".
    user roger
    topic foo/bar
    
    # This affects all clients.
    pattern write $SYS/broker/connection/%c/state
    
    user admin
    topic readwrite #

    pwfile,加密的用户名和密码存储文件

    roger:$6$clQ4Ocu312S0qWgl$Cv2wUxgEN73c6C6jlBkswqR4AkHsvDLWvtEXZZ8NpsBLgP1WAo/qA+WXcmEN/mjDNgdUwcxRAveqNMs2xUVQYA==
    sub_client:$6$U+qg0/32F0g2Fh+n$fBPSkq/rfNyEQ/TkEjRgwGTTVBpvNhKSyGShovH9KHewsvJ731tD5Zx26IHhR5RYCICt0L9qBW0/KK31UkCliw==
    pub_client:$6$vxQ89y+7WrsnL2yn$fSPMmEZn9TSrC8s/jaPmxJ9NijWpkP2e7bMJLz78JXR1vW2x8+T3FZ23byJA6xs5Mt+LeOybAHwcUv0OCl40rA==
    admin:$7$101$qDUNQWf2L3MJySTg$7hj4qH6+tzYhXrk+GO0UVlFvuVK4GNsXTU93064ki6r8Je8Y/eOAhiLvsQKG3j+HJp1cVRhhEzpWrAz9wg7tkA==
  3. 启动服务端
    通过mosquitto 指令启动

    mosquitto -c /etc/mosquitto/mosquitto.conf

    通过rc-service 启动

    rc-service mosquitto start

    输出

     * Caching service dependencies ... [ ok ]
     * Starting Mosquitto message broker ... [ ok ]
    设置开机启动
    rc-update add mosquitto
  4. 客户端测试

     mosquitto_sub -h 127.0.0.1 -p 1883 -u admin -P admin -t "#"

    在本机客户端订阅所有topic
    HG5fchrBs01Jig11K2llQwitPLrCTeo3E21VjxEXS24.png
    在远程电脑客户端发布测试消息
    54-IymLpw2nN5sBEZZBl9ARaKYxPh3CDlHn0EfQh0Ps.png

感谢雨云的云计算平台支持

参考链接
https://blog.csdn.net/hxj0323/article/details/108409225

https://blog.csdn.net/u012377333/article/details/69397124

https://blog.csdn.net/weixin\_43025071/article/details/82502094

https://answers.launchpad.net/mosquitto/+question/226477

https://cloudbool.com/archive/mosquitto-basic-config.html

https://blog.csdn.net/u012377333/article/details/69397124

https://www.jianshu.com/p/1a8a5814b5a8