MQ Telemetry Transport 消息队列遥测传输协议
IBM 1994开发
MQTT v3.1.1 第4版 OASIS标准
1 to 0/1/Nhtml
MQTT是一个TCP服务端,称为broker。
经过这个broker服务,咱们能够做为发布者,发送一条主题消息给broker,而后其余订阅者经过消息订阅机制得到broker的主题消息推送。咱们也能够做为订阅者,订阅其余发布者的主题消息。web
消息队列存储消息,直到它们被消耗
消息队列中只有一个消费者处理消息,MQTT中订阅主题的每一个订阅者都会收到消息
消息队列要提早并明确建立,MQTT中能够随时实时建立redis
broker开启一个host的TCP 1883端口
客户端链接Broker
若是是重连,须要带上上次ClientID
若是不是重连,能够指定CleanSession是否清空以前会话
能够指定两端之间心跳维持时间
服务端根据参数,重用或开启会话Session,绑定ClientID
一个会话,能够服务多个TCP链接,取决因而否CleanSession缓存
PersistentSession与CleanSession
session相关信息将会同时保存在broker和client中,session里包含如下内容:
客户端的订阅信息
从broker接收来的尚未ack的消息
发送给client的尚未ack的消息安全
客户端主动断开:客户端发送 DISCONNECT 关闭连接,遗嘱失效并删除
客户端异常断开:遗嘱消息发布服务器
心跳消息
链接、断开链接消息 10 e0
订阅、取消订阅消息 80
发布消息 30websocket
为了能知道哪一个客户端异常断开,broker定时查询客户端状态。
当检查到客户端异常断开时,就发布客户端链接时指定的遗嘱消息到指定主题。
正常断开,是不会有遗嘱消息发布的。session
发布者发布主题消息时,能够指定消息是否缓存到broker,做为对应主题的最后一次消息记录
订阅者链接后,可一次性获取想要的主题的所有保留消息socket
树状结构,用'/'分隔,如:home/light/brightness
通配符:code
查看服务器的状态信息
基于主题的消息过滤,可使用通配符来订阅多个主题的消息
发布消息时,不可使用通配符,必须指定完整的topic名
若是想发送给多个topic,须要发布屡次
发布者在每次发布消息时都须要设置QoS
可使用基于内存的,可是单点故障状况下,消息会丢失。
能够结合外部redis,进行消息外部存储。
storage_class io.moquette.persistence.redis.RedisStorageService # redis storage redis.host localhost redis.port 6379 redis.password redis.database 0 redis.prefix monitor: