标签:等级 qos 信息 比较 dup 完成 通配 ranking shark
名字 | 值 | 报文流动方向 | 描述 |
---|---|---|---|
SUBSCRIBE | 8 | client -> server | 客户端订阅请求 |
SUBACK | 9 | server -> client | 订阅请求报文确认 |
PUBLISH | 3 | 双向 | 发布消息 |
UNSUBSCRIBE | 10 | client -> server | 取消订阅请求 |
UNSUBACK | 11 | server -> client | 取消订阅报文确认 |
控制报文 | 固定报文标志 | Bit 3 | Bit 2 | Bit 1 | Bit 0 |
---|---|---|---|---|---|
SUBSCRIBE | Reserved | 0 | 0 | 1 | 0 |
SUBACK | Reserved | 0 | 0 | 0 | 0 |
PUBLISH | Used in MQTT 3.1.1 | DUP | QoS | QoS | RETAIN |
UNSUBSCRIBE | Reserved | 0 | 0 | 1 | 0 |
UNSUBACK | Reserved | 0 | 0 | 0 | 0 |
控制报文 | 报文标识符字段 |
---|---|
SUBSCRIBE | 需要 |
SUBACK | 需要 |
PUBLISH | 需要(如果QoS > 0,Qos=0时不能带) |
UNSUBSCRIBE | 需要 |
UNSUBACK | 需要 |
控制报文 | 有效载荷 |
---|---|
SUBSCRIBE | 需要 |
SUBACK | 需要 |
PUBLISH | 可选(允许发空负载) |
UNSUBSCRIBE | 需要 |
UNSUBACK | 不需要 |
MQ Telemetry Transport Protocol, Subscribe Request
# 固定报头
Header Flags: 0x82 (Subscribe Request)
1000 .... = Message Type: Subscribe Request (8)
.... 0010 = Reserved: 2
Msg Len: 9
# 可变报头
Message Identifier: 1 # 2个字节,0x0001,报文标识符
# 有效载荷
Topic Length: 4 # 2个字节,0x0004,Topic的长度
Topic: TEST # 2个字节,0x54455354,Topic的值
Requested QoS: At most once delivery (Fire and Forget) (0) # 1个字节 Qos0 0x00
如果服务端选择不支持包含通配符的主题过滤器,必须拒绝任何包含通配符过滤器的订阅请求。
Qos为服务质量要求,后面一节讲。
MQ Telemetry Transport Protocol, Subscribe Ack
# 固定报头
Header Flags: 0x90 (Subscribe Ack)
1001 .... = Message Type: Subscribe Ack (9)
.... 0000 = Reserved: 0
Msg Len: 3
# 可变报头
Message Identifier: 1 # 2个字节,0x0001,与SUBSCRIBE相同
# 有效载荷
Granted QoS: At most once delivery (Fire and Forget) (0) # 返回码,最大Qos
MQ Telemetry Transport Protocol, Publish Message
# 固定报头
Header Flags: 0x30 (Publish Message)
0011 .... = Message Type: Publish Message (3) # 代表发布消息
.... 0... = DUP Flag: Not set # 重发标志
.... .00. = QoS Level: At most once delivery (Fire and Forget) (0) # Qos
.... ...0 = Retain: Not set # 保留标志
Msg Len: 16
# 可变报头
### 主题名
Topic Length: 4 # 2个字节,0x0004
Topic: TEST # 4个字节
### 报文标识符,当Qos不为0时,必须带上。
# 有效载荷
Message: HelloWorld
重发标志:DUP为0,代表Client第一次发这个报文;DUP为1,代表Client重发已发的报文。对于Qos为0时,DUP必须为0。
服务质量等级
Qos | Bit2 | Bit1 | 描述 |
---|---|---|---|
0 | 0 | 0 | 最大分发一次 |
1 | 0 | 1 | 至少一次 |
2 | 1 | 0 | 只分发一次 |
- | 1 | 1 | 保留位 |
服务质量等级 | 预期响应 |
---|---|
Qos0 | 无响应 |
Qos1 | PUBACK报文 |
Qos2 | PUBREC报文 |
MQ Telemetry Transport Protocol, Unsubscribe Request
# 固定报头
Header Flags: 0xa2 (Unsubscribe Request)
1010 .... = Message Type: Unsubscribe Request (10)
.... 0010 = Reserved: 2
Msg Len: 8
# 可变报头
Message Identifier: 2 # 报文标识符,0x0002
# 有效载荷
Topic Length: 4
Topic: TEST
MQ Telemetry Transport Protocol, Unsubscribe Ack
Header Flags: 0xb0 (Unsubscribe Ack)
1011 .... = Message Type: Unsubscribe Ack (11)
.... 0000 = Reserved: 0
Msg Len: 2
Message Identifier: 2
# demo1:多层通配符
订阅:"sport/tennis/player1/#"
收到:sport/tennis/player1
sport/tennis/player1/ranking
sport/tennis/player1/score/wimbledon
# demo2: 单层通配符
订阅:"sport/+"
收到: sport/tennis
收不到: sport
sport/
# demo3:单层通配符
订阅:"+"
收到: sport
收不到: sport/
# demo4:单层通配符
订阅:"+/"
收到: sport/
收不到: sport
标签:等级 qos 信息 比较 dup 完成 通配 ranking shark
原文地址:https://www.cnblogs.com/linzhanfly/p/9936665.html