树莓派4 mosquitto 基本操作

1. mosquitto 安装

sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa
sudo apt-get update
sudo apt-get install mosquitto
sudo apt-get install mosquitto-clients

安装后,输入以下命令验证

which mosquitto

如果安装成功,会出现

pi@TY:~ $ which mosquitto
/usr/sbin/mosquitto

2. 启动服务器

用一下命令启动服务器,配置文件路径默认为/etc/mosquitto/mosquitto.conf,端口号可以不写,若不写则默认为1883

mosquitto -c /etc/mosquitto/mosquitto.conf -p 1883

可能出现的报错

1721541628: Error: Unable to open log file /var/log/mosquitto/mosquitto.log for writing.

如果可以确认该文件存在,那就是因为用户权限不足以打开日志,通过以下命令修改权限即可

sudo chmod 666 /var/log/mosquitto/mosquitto.log

3. 发布、订阅

开一个终端窗口,作为订阅者(Subscriber),通过以下命令订阅。
-t temp 指定希望订阅的主题名称是 temp。这意味着该命令会监听任何发布到 temp 主题的消息,并将它们打印到命令行界面。

mosquitto_sub -t temp

另开一个终端窗口,作为发布者(Publisher),执行如下命令。向 MQTT 主题 temp 发送消息 “Hello”。

mosquitto_pub -t temp -m Hello

执行的效果如图:
在这里插入图片描述
主题的名字可以随便起,不需要提前定义。
以上两条命令还可以添加更多的参数:

mosquitto_sub -d -v -t temp -h 192.168.1.13 -p 1883 -q 2
mosquitto_pub -d -t temp -h 192.168.1.13 -p 1883 -m Hello -q 2
-d 打印参数
-h 指定 MQTT 服务器的主机名或地址。
-p 指定端口号(如果不是默认的 1883)。例如:-p 1883
-u 用户名(如果需要)。
-P 密码(如果需要)。
-t 订阅的主题名称。可以使用通配符(如 + 和 #)订阅多个主题。
-v 显示主题名称和消息内容。
-q 设置服务质量(QoS),可以是 0、1 或 2。

服务质量QoS

在 MQTT 协议中,服务质量(Quality of Service,QoS)是确保消息传递可靠性的关键机制。QoS 有三种级别,每种级别都针对不同的网络环境和消息重要性提供了不同程度的保证:

QoS 0 - 最多一次(“At most once”)

QoS 0 是服务质量中的最低级别。消息在这个级别被发送出去后,不会进行进一步的确认或重传,无论消息是否到达接收端。

无确认:发送方在发送完消息后不会等待接收方的任何确认。
无重传:如果消息在传输中丢失,不会进行重传。
低开销:因为没有确认和重传的过程,所以网络开销最小。
适用场景:

频繁更新且不太关键的数据,如环境传感器数据(温度、湿度等)。
高速且经常变动的数据流,例如实时股票市场数据。

QoS 1 - 至少一次(“At least once”)

QoS 1 确保消息至少到达一次。这意味着如果发送方没有收到来自接收方的确认,它会重新发送消息。

消息确认:接收方必须对每个消息发送PUBACK(发布确认)。
可能的消息重复:如果发送方未能及时接收到确认,可能会重发消息,导致接收方收到重复的消息。
中等网络开销:需要额外的确认消息,但只在消息可能未送达时才重传。
适用场景:

需要确保消息到达但可以接受偶尔的重复的应用,如智能家居设备控制命令。

QoS 2 - 仅一次(“Exactly once”)

QoS 2 提供最高级别的服务质量,确保每条消息恰好被送达一次,既不丢失也不重复。
四步确认过程:涉及至少四个步骤的握手(两个来回的消息交换),以确保消息只被处理一次。
避免消息丢失和重复:通过严格的消息交换协议,确保消息不会丢失也不会重复。
高网络开销:因为需要多个消息来回,所以相比QoS 0和QoS 1,网络开销较大。
适用场景:

对消息的准确性要求极高的应用,如金融交易,订单处理系统等,这些场景中信息不能丢失也不能重复。
总结
QoS 0:速度最快,用于不关键的数据传输。
QoS 1:确保数据送达,适合大多数应用。
QoS 2:提供最高可靠性,适用于需要精确消息控制的场景。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值