mqtt 轻量级 broker —— mosquitto

mqtt broker 之前介绍了 RabbitMQ插件之MQTT,今天再介绍一个轻量级的 mosquitto,安装包mosquitto-2.0.14.tar.gz只有几百KB,官方的docker镜像也只有几M,非常小

引用一段官方的介绍

Eclipse Mosquitto是一个开源(EPL/EDL许可)消息代理,实现了MQTT协议5.0、3.1.1和3.1版本。Mosquitto重量轻,适用于从低功耗单板计算机到全服务器的所有设备。 MQTT协议提供了一种使用发布/订阅模型进行消息传递的轻量级方法。这使得它适用于物联网消息,如低功耗传感器或移动设备,如手机、嵌入式计算机或微控制器。 Mosquitto项目还提供了一个用于实现MQTT客户端的C库,以及非常受欢迎的mosquitto_pub和mosquitto_sub命令行MQTT客户端。

docker-compose

version: '3'

networks:
  web-network:

services:
  docker-mosquitto:
    image: eclipse-mosquitto:2.0.14
    hostname: mosquitto
    restart: always
    tty: true
    volumes:
      - ./mosquitto/config:/mosquitto/config
      - ../log/mosquitto:/mosquitto/log
      - ../apps/mosquitto/data:/mosquitto/data
    ports:
      - 1883:1883
      - 8883:8883
      - 15675:15675
      - 15676:15676
    networks:
      - web-network

  # mosquitto的web管理后台
  # 通过http://localhost:8088/访问
  docker-management-center:
    image: cedalo/management-center:2.4.2
    restart: always
    environment:
      CEDALO_MC_BROKER_ID: mosquitto
      CEDALO_MC_BROKER_NAME: Mosquitto
      CEDALO_MC_BROKER_URL: mqtt://docker-mosquitto:1883
      CEDALO_MC_BROKER_USERNAME: cw
      CEDALO_MC_BROKER_PASSWORD: 123456
      CEDALO_MC_USERNAME: "admin"
      CEDALO_MC_PASSWORD: "12345"
    ports:
      - 8088:8088
    networks:
      - web-network

连接方式

mqtt

不适合前端使用

mqtt,需要配置

mqtt://localhost:1883

mqtt + tls,需要配置

mqtt://localhost:8883

ws

适合前端使用

ws,需要配置

ws://localhost:15675

wss,需要配置

wss://localhost:15676

配置

创建用户

安全起见,禁用匿名连接,先创建密码文件

#创建密码文件
mosquitto_passwd -c /mosquitto/config/password_file cw

config/mosquitto.conf配置文件

listener 1883

listener 8883
cafile /mosquitto/config/cert/ca.cer
certfile /mosquitto/config/cert/www.cuiwei.net.pem
keyfile /mosquitto/config/cert/www.cuiwei.net.key

listener 15675
protocol websockets

listener 15676
protocol websockets
cafile /mosquitto/config/cert/ca.cer
certfile /mosquitto/config/cert/www.cuiwei.net.pem
keyfile /mosquitto/config/cert/www.cuiwei.net.key

persistence true
persistence_location /mosquitto/data
#log_dest file /mosquitto/log/mosquitto.log
#禁止匿名连接
allow_anonymous false
#cw:123456
password_file /mosquitto/config/password_file

##启用动态安全
#plugin /usr/lib/mosquitto_dynamic_security.so
#plugin_opt_config_file /mosquitto/config/dynamic-security.json

命令行

mosquitto -v

订阅
mosquitto_sub -t test -u cw -P 123456

发布
mosquitto_pub -t test -m 123 -u cw -P 123456

订阅2
mosquitto_sub -v -t topic1

发布2
mosquitto_pub -t topic1 -m message1

其他

关于调试工具,js库,php库,证书如何获取等,完全可以参考RabbitMQ插件之MQTT ,不再赘述。

文档

https://docs.cedalo.com/mosquitto/2.0/installation

https://mosquitto.org/documentation/dynamic-security/

感谢阅读这篇文章,如果你喜欢,或者遇到了问题,可以关注我的公众号