zoukankan      html  css  js  c++  java
  • mqtt概念整理

    运行模式: 

    服务器: emqx (https://docs.emqx.io/edge/v3/cn/install.html

    协议头字节数: 2个字节

    三种消息可能性保障(Qos)

    • Qos0:最多一次 、
    • Qos1:最少一次、
    • Qos2:只有一次。

    Sbuscrib: 订阅消息

    publish: 发布消息

    MQTT是通过主题对消息进行分类的,可以通过反斜杠表示多个层级关系。主题并不需要创建,直接使用就是了。

    主题还可以通过通配符进行过滤。其中,+可以过滤一个层级,而#只能出现在主题最后表示过滤任意级别的层级。

    举个例子:

    ·       building-b/floor-5:代表B楼5层的设备。

    ·       +/floor-5:代表任何一个楼的5层的设备。

    ·       building-b/#:代表B楼所有的设备。

    Broker(服务器) - 保留消息 功能

    MQTT客户端向服务器发布(PUBLISH)消息时,可以设置保留消息(Retained Message)标志。保留消息(Retained Message)会驻留在消息服务器,后来的订阅者订阅主题时仍可以接收该消息。

    Broker会存储每个Topic(主题)的最后一条保留消息及其Qos,当订阅该Topic的客户端上线后,Broker需要将该消息投递给它。 

    保留消息的删除

    1. 方式1:发送空消息体的保留消息;
    2. 方式2:发送最新的保留消息覆盖之前的(推荐);

    MQTT会话(Clean Session)

    MQTT客户端向服务器发起CONNECT连接请求时,可以通过’Clean Session’标志设置会话。
    ‘Clean Session’设置为0,表示创建一个持久会话,在客户端断开连接时,会话仍然保持并保存离线消息,直到会话超时注销。
    ‘Clean Session’设置为1,表示创建一个新的临时会话,在客户端断开时,会话自动销毁。

    当clean session的值为false,即保留会话,那么
    该客户端上线,并订阅了主题"r",那么该主题会一直存在,即使客户端离线,该主题也仍然会记忆在EMQ服务器内存。
    当客户端离线又上线时,仍然会接收到离线期间别人发来的publish消息(QoS=0,1,2)。类似即时通讯软件,终端可以接收离线消息。
    除非客户端主动取消订阅主题,否则主题一直存在。另外,Mnesia本地不会持久化session,subscription和topic,服务器重启则丢失。

  • 相关阅读:
    app-授权登录插件配置
    微信公众号-公众号设置-功能设置
    Java变量
    Java数据类型
    计算机存储单元
    Java常量
    k8s
    第一个Java程序
    旋转木马
    tools
  • 原文地址:https://www.cnblogs.com/shuiche/p/11737378.html
Copyright © 2011-2022 走看看