Lapple
发布于 2024-08-28 / 3 阅读
0

MQTT服务端mosquitto安装

MQTT 是一种基于发布/订阅模式的轻量级消息传输协议,专门针对低带宽和不稳定网络环境的物联网应用而设计,可以用极少的代码为联网设备提供实时可靠的消息服务。MQTT 协议广泛应用于物联网、移动互联网、智能硬件、车联网、智慧城市、远程医疗、电力、石油与能源等领域。

这些东西看看就好,我们作为用户更关心在使用上的注意事项,这里主要有三个

QoS

  • QoS 0:消息最多传递一次。
    如果当时客户端不可用,则会丢失该消息。发布者发送一条消息之后,就不再关心它有没有发送到对方,也不设置任何重发机制。

  •  QoS 1:消息传递至少 1 次。
    包含了简单的重发机制,发布者发送消息之后等待接收者的 ACK,如果没收到 ACK 则重新发送消息。这种模式能保证消息至少能到达一次,但无法保证消息重复。

  • •QoS 2:消息仅传送一次。
    设计了重发和重复消息发现机制,保证消息到达对方并且严格只到达一次。

retain(保留)

Retain 作用是指在 MQTT 协议中,发布者(publisher)可以将消息(message)设置为“保留”(retain),服务器在接收到消息后,会将其保存在“发布者消息存储区”(publisher message store)中。这样一来,即使客户端暂时没有连接到服务器,消息也不会丢失。当客户端重新连接服务器时,服务器会从“发布者消息存储区”中取出消息,然后将其发送给客户端。
如果不想保留这个消息,我们如何删除呢?
这时候只需要向对应的主题发送一个 Payload 为空的保留消息,服务端就会删除这个主题下的保留消息

topic(主题)

mqtt 是基于发布/订阅模式消息传输协议,也就是说我们有一个发送方 和 多个或一个接收方,那我们如何确定消息是属于谁? 这里就是使用 topic 来区分的。
消息发送的时候需要有一个明确的topic 可以是 : xxx/123 或 xxx/123
接收方在订阅消息的时候,可以和发送方一致,例如: xxx/123 也可以范围订阅, xxx/# 这个就代表可以收到所有以 xxx/ 开头的消息,业务处理的时候再按照具体的 topic 来使用。

安装 mqtt 服务端

安装 mqtt服务端 或者叫 mqtt broker 的方法有好几种,mqtt 的服务端目前用的比较多的也有多种,目前常用的是:

  1. mosquitto

  2. emqx 官方教程很详细,需要的直接访问: https://www.emqx.com/zh/blog/the-easiest-guide-to-getting-started-with-mqtt

宿主机安装

ubuntu 主机安装

# 更新软件源
sudo apt update
# 安装
sudo apt install mosquitto

centos7 安装

#
sudo yum -y install epel-release
sudo yum -y install mosquitto

启动服务,并设置开机启动

# 启动服务
sudo systemctl start mosquitto
# 开启启动
sudo systemctl enable mosquitto

取消匿名用户访问和设置用户名和密码

# 修改配置文件
sudo nano /etc/mosquitto/mosquitto.conf

# 如果存在allow_anonymous ,就改成false
allow_anonymous false
# 设置用户名和密码所在文件
password_file /etc/mosquitto/passwd


# 设置用户名和密码, 密码会让输入两次,
sudo mosquitto_passwd -c /etc/mosquitto/passwd <username>

# 重启服务
sudo systemctl restart mosquitto