原创

CentOS7 安装使用mosquitto


1. 安装EPEL仓库

首先,需要安装EPEL(Extra Packages for Enterprise Linux)仓库,因为Mosquitto不在CentOS默认的仓库中。

sudo yum install epel-release

2. 安装Mosquitto

安装完EPEL仓库后,通过yum来安装Mosquitto。

sudo yum install mosquitto mosquitto-clients

这个命令会安装Mosquitto服务器和客户端工具。

3. 启动Mosquitto服务

安装完成后,启动Mosquitto服务。

sudo systemctl start mosquitto

4. 设置Mosquitto服务开机自启

为了让Mosquitto在系统启动时自动运行,需要设置为开机自启。

sudo systemctl enable mosquitto

5. 检查Mosquitto服务状态

检查Mosquitto服务的状态,确保它正在运行。

sudo systemctl status mosquitto

6. 使用Mosquitto客户端测试连接

安装完Mosquitto后,使用mosquitto_pub和mosquitto_sub命令来测试消息的发布和订阅功能。

发布消息(Publisher):

mosquitto_pub -h localhost -t "test/topic" -m "Hello MQTT"

这里-h指定了MQTT服务器的地址,-t指定了主题(Topic),-m是要发布的消息内容。

订阅消息(Subscriber): 在另一个终端中,你可以订阅刚才发布的主题来接收消息。

mosquitto_sub -h localhost -t "test/topic" -v

这里-v选项表示显示接收到的消息的详细信息。

7. 配置文件(可选)

Mosquitto的配置文件通常位于/etc/mosquitto/mosquitto.conf。根据需要编辑这个文件来配置认证、持久化、监听端口等高级功能。例如,要允许非本地连接,可以取消注释或添加以下行:

listener 1883 0.0.0.0

修改配置后,重启Mosquitto服务:

sudo systemctl restart mosquitto

8.设置连接的用户名密码

编辑Mosquitto配置文件(通常位于/etc/mosquitto/mosquitto.conf)来启用用户名和密码验证

 vim /etc/mosquitto/mosquitto.conf

在文件中找到或添加以下行来启用密码文件和使用持久会话:

allow_anonymous false
password_file /etc/mosquitto/passwd
persistence true
persistence_location /var/lib/mosquitto/

保存并关闭文件。

创建一个密码文件,Mosquitto将使用这个文件来验证用户名和密码。

mosquitto_passwd -c /etc/mosquitto/passwd <username>

在上面的命令中,将替换为想要设置的用户名。运行命令后,系统会提示输入密码。输入密码后,该用户名和密码将被添加到passwd文件中。

重启Mosquitto服务:

sudo systemctl restart mosquitto

验证配置

启用接收消息

mosquitto_sub -h localhost -t "test/topic" -v -u <username> -P <password>

启用发送消息

mosquitto_pub -h localhost -t "test/topic" -u <username> -P <password> -m "Hello MQTT"

替换为步骤3中设置的凭据。如果一切设置正确,能看到消息被成功发布和接收。

命令解释

  • mosquitto_pub: 发送消息
  • mosquitto_sub: 接收消息
  • -h: 指定MQTT代理的地址
  • -t: 指定主题
  • -m: 消息内容
  • -r: 设置保留标志
  • -v: 在订阅过程中直接打印详细信息 ‌
  • -c: 禁用会话清理功能,保持订阅状态
  • -k: 设置心跳间隔时间,单位 秒(如:-k 60)
  • -n: 效果等同于(-m ""),发送空消息
  • -q 指定QoS 默认QoS为0

其他

1、如何清除保留消息?

答:发送一条空的保留消息即可清除

mosquitto_pub -h localhost -u <username> -P <password> -t "your/topic" -n -r
CentOS
消息MQ
  • 作者:一介闲人(联系作者)
  • 发表时间: 2025-07-03 09:40
  • 版权声明:原创-转载需保持署名
  • 公众号转载:请在文末添加本文链接
  • 评论