当前位置: 首页 > article >正文

eclipse-mosquitt之docker部署安装与使用

一 前言

Eclipse Mosquitto

Eclipse Mosquitto 是一个开源的 MQTT 消息代理(broker),实现了 MQTT 协议(版本 3.1、3.1.1 和 5.0)。它轻量、高效,适用于物联网(IoT)和其他需要低带宽、低延迟通信的场景。

MQTT

MQTT(Message Queuing Telemetry Transport)是一种基于发布/订阅模式的轻量级消息传输协议,专为低带宽、不稳定的网络环境设计。它广泛应用于物联网、移动应用和嵌入式系统中。

  • 发布/订阅模式:客户端可以发布消息到特定的主题(topic),也可以订阅感兴趣的主题以接收消息。
  • 代理(Broker):负责接收发布的消息,并将其转发给订阅了相应主题的客户端。

二 Eclipse Mosquitto特点

  • 支持 MQTT 3.1、3.1.1 和 5.0 协议。
  • 轻量级,适合资源受限的设备。
  • 支持 TLS/SSL 加密通信。
  • 支持持久化消息(保留消息和持久会话)。
  • 提供命令行工具(mosquitto_pub 和 mosquitto_sub)用于测试和调试。
  • 跨平台支持(Linux、Windows、macOS 等)。

三 docker 安装Eclipse Mosquitto

1、docker下载mosquitto镜像
docker pull eclipse-mosquitto
2、创建文件,配置目录

下载好镜像后可以通过docker images查看下拉好的镜像,确认没有问题后面就开始做运行前的准备了,为了以后方便操作我们需要把常用的文件夹挂在到磁盘中,现在磁盘中创建三个文件夹分别是config,data和log,一个是存放配置文件,可以用来修改mosquitto的端口,配置支持scoket或者匿名访问等。data用来存放数据,log用来存放日志。

mkdir -p /usr/local/mosquitto/config
mkdir -p /usr/local/mosquitto/data
mkdir -p /usr/local/mosquitto/log

在上面创建的config文件夹中创建mosquitto的配置文件mosquitto.conf内容如下:

persistence true
persistence_location /usr/local/mosquitto/data
log_dest file /usr/local/mosquitto/log/mosquitto.log
listener 9001
port 1883
allow_anonymous true

配置说明如下:

listener 1883:

这一行指示 Mosquitto 在端口 1883 上监听 MQTT 连接请求。这是 MQTT 协议的标准端口,客户端通常会连接到这个端口与 MQTT 代理交互。如果您没有特别指定端口,客户端默认也会尝试连接到这个端口。

persistence true:

此配置开启 Mosquitto 的持久化存储功能。当设置为 true 时,Mosquitto 会将未被客户端接收的消息保存到磁盘上。这样,即使 Mosquitto 服务重启,这些消息也不会丢失,而是会在服务恢复后继续发送给相应的订阅者。这对于确保消息可靠传输和防止消息丢失至关重要,特别是在处理重要通知、命令或状态更新等场景。

persistence_location /mosquitto/data/:

这一行定义了 Mosquitto 用于存储持久化消息的目录。此处指定的路径是 /mosquitto/data/,意味着 Mosquitto 会在容器内部(如果是 Docker 容器)或宿主机(如果是直接安装)的相应目录下创建和管理持久化数据文件。确保该目录存在且具有足够的权限供 Mosquitto 写入。

log_dest file /mosquitto/log/mosquitto.log:

这行配置指定了 Mosquitto 的日志输出目的地及文件路径。在这里,日志被定向到文件 /mosquitto/log/mosquitto.log。所有 Mosquitto 的运行日志、错误信息和其他诊断消息都将写入到这个文件中,便于管理员监控服务状态、排查问题或进行审计。
password_file /mosquitto/config/userpass.conf:

这个配置告诉 Mosquitto 使用指定的密码文件 /mosquitto/config/userpass.conf 进行用户身份验证。密码文件通常包含用户名和经过哈希处理的密码对,用于限制客户端访问。只有在密码文件中注册的用户才能成功连接到 Mosquitto,并根据其配置的权限进行发布或订阅操作。启用此配置可以增强 MQTT 服务的安全性,防止未经授权的访问。

per_listener_settings false:

此配置项指示 Mosquitto 是否为每个监听器(listener)单独应用特定的设置。当设置为 false 时,所有监听器共享相同的全局设置,如用户认证、ACL(访问控制列表)、持久化存储等。如果设置为 true,则可以为不同的监听器配置不同的认证方式、权限规则等。此处设为 false 表示所有监听器(如上面定义的 1883 端口)使用相同的认证、权限等设置。

allow_anonymous false:

这个配置禁止 Mosquitto 接受匿名(未经身份验证)的连接请求。当设置为 false 时,所有试图连接到 Mosquitto 的客户端必须提供有效的用户名和密码(通过 password_file 配置的文件进行验证),否则连接请求将被拒绝。可以防止未经授权的设备或客户端访问 MQTT 服务。

然后为创建的目录授权

chmod -R 755 /usr/local/mosquitto
chmod -R 777 /usr/local/mosquitto/log

执行运行命令:

docker run -it --name=mosquitto --privileged  -p 1883:1883 -p 9001:9001 -v /usr/local/mosquitto/config/mosquitto.conf:/mosquitto/config/mosquitto.conf -v /usr/local/mosquitto/config/userpass.conf:/mosquitto/config/userpass.conf  -v /usr/local/mosquitto/data:/mosquitto/data -v /usr/local/mosquitto/log:/mosquitto/log -d  eclipse-mosquitto 

运行后可以通过docker ps -a查看是否运行成功,如果是用阿里云服务器,还要记得把出入站规则添加上1883和9001端口,方便外网访问

四 MQTT安装使用

1 下载安装

mqtt在官网下载安装

https://mqttx.app/?utm_source=mqttx&utm_medium=referral&utm_campaign=logo-to-homepage
2 使用

新增连接,编辑连接信息
在这里插入图片描述
编辑完成,点击连接,然后进行消息发送
在这里插入图片描述
新增个连接,来测试消息的接收,添加订阅Topic设置为test
在这里插入图片描述
下面就可以收到发送的消息
在这里插入图片描述


http://www.kler.cn/a/586938.html

相关文章:

  • 现在有分段、句子数量可能不一致的中英文文本,如何用python实现中英文对照翻译(即每行英文对应相应的中文)
  • MySQL事务及索引复习笔记
  • Qt从入门到入土(十) -数据库操作--SQLITE
  • JAVA EE(10)——线程安全——synchronized JUC(java.util.concurrent) 的常见类 线程安全的集合类
  • 机器学习编译器(二)
  • Java中的访问修饰符有哪些
  • Swagger 从 .NET 9 中删除:有哪些替代方案
  • 洛谷 P4933 大师
  • LRU(最近最少使用)算法实现
  • 探索Maas平台与阿里 QWQ 技术:AI调参的魔法世界
  • 车载软件刷写工具vFlash --- 自动化接口(Automation API)应用简介
  • 德语A1学习
  • 批量ip反查域名工具
  • 删除有序数组中的重复项(26)
  • [网络] 网络基础概念--socket编程预备
  • Ubuntu 24 常用命令方法
  • 【Git】配置Git
  • 按钮权限的设计及实现
  • uniapp-x vue 特性
  • 在线 SQL 转 SQLAlchemy:一键生成 Python 数据模型