自学内容网 自学内容网

mqtt学习笔记(一)

mqtt使用场景

MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,特别适用于资源受限的设备(内存小)和网络环境较差(低带宽、降低网络流量成本)的场景。适用于物联网(IoT)设备之间的通信,常用于发布/订阅模式的消息传输。

mqtt可能缺点

不适合大数据量传输、缺乏复杂的事务处理、消息顺序不保证、依赖中间代理

mqtt学习疑问探索

1、mqtt主题发布过的历史消息,全新连接的client能消费到吗?

针对普通消息不能,只能消费新发布的普通消息;
保留消息(retained messages)例外,有些设备上线要知道最新的设备状态等

2、mqtt的client掉线如何重连,重连后订阅的topic配置还在不?

可以配置成自动连接或手动连接。
连接后,订阅的topic配置不存在了,确实需要重新订阅之前的主题

3、mqtt的client掉线重连后,如何保证掉线期间的消息能被消费到?

可以设置会话不被清空,会话清空的话,就消费不到掉线期间产生的消息了。
参考方法setCleanSession(true or false)

4、mqtt客户端订阅的消息能保证按序消费吗?

得考虑是否支持QoS2配置、能否按序生产、能否按序消费

5、mqtt客户端能订阅自己发布的主题消息吗?

可以

6、mqtt设置QoS=2还有必要在业务端判重吗?

保守、严谨来说,业务侧还是很有必要进行判重。
主要是因为消息消费后,在最后的确认机制未成功反馈结果时(极端情况下手动确认时,网络异常、系统故障等),消息还是可能被重复进行消费

7、mqtt协议服务端支持的最大连接数?

具体看选择的mqtt协议中间件类型、服务器配置、压测等情况…

8、mqtt服务器控制台?

看具体使用的mqtt协议中间件

9、mqtt中的普通消息、保留消息、遗嘱消息区别?

保留消息可以在新客户端订阅时,推送;
遗嘱消息是客户端连接时指定的消息,可以在broker监测离线时,推送告知给其他订阅的客户端

10、消息默认是否过期,能否设置过期时间?

发布后broker存储,默认不过期,普通消费消费后自动删;
可以设置过期时间,过期不消费会被清掉,不会再推送消费

11、支持延迟发布?

支持,即可提前发布消息在broker服务端留存,达到一定的延迟时间,再推送到订阅的客户端去消费

12、用户属性?

可以在发送消息时,指定用户属性(有点类似于设置http接口的请求头参数)

13、共享订阅?

mqtt5.0支持,即共享订阅后,同一主题的多个客户端可以负载均衡处理消息。
在普通的订阅中,我们每发布一条消息,所有匹配的订阅端都会收到该消息。当某个订阅端的消费速度无法跟上消息的生产速度时,我们没有办法将其中一部分消息分流到其他订阅端中来分担压力。这使订阅端容易成为整个消息系统的性能瓶颈。

14、排它订阅?

一个主题当前仅能存在一个订阅者,在当前订阅者未取消订阅前,其他订阅者都将无法订阅该主题。

15、自动订阅?

自动订阅能够给 EMQX 设置多个规则,在设备成功连接后按照规则为其订阅指定主题,不需要额外发起订阅。

16、主题通配符?

支持通配符规则设置,主要用于客户端一次订阅多个主题


原文地址:https://blog.csdn.net/sinat_34806137/article/details/143749367

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!