在RabbitMQ中使用新的MQTT 5.0功能-CSDN博客

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

MQTT是物联网IoT的标准协议是轻量级的协议头很小可以节省网络带宽。MQTT也很有效与其他消息传递协议相比客户端通过更短的握手进行连接和身份验证。

以下是本文介绍的MQTT 5.0功能列表

功能1消息过期

可以为发布到代理的每条消息设置以秒为单位的过期时间message-expiry-interval。如果消息未在到期前被消费则该消息将被丢弃或标记为死信。

如果队列通过参数 x-dead-letter-exchange 设置了死信交换器则过期的消息会进入死信交换器最终进入与死信交换器绑定的队列即死信队列。

功能2订阅标识符

客户端可以在订阅时设置订阅标识符subscription-identifier。当有匹配该订阅的消息发送给此客户端时代理会将该订阅标识符包含在PUBLISH数据包中。客户端使用通配符订阅多个主题时可以通过消息中的订阅标识符区分消息来自哪个订阅。

功能3订阅选项

QoS

表示服务端在向订阅端发送消息时可以使用的最大 QoS 等级。

0最多交付一次可能丢失消息。

1至少交付一次可以保证收到消息但消息可能重复。

2只交付一次可以保证消息既不丢失也不重复。QoS等级从低到高不仅意味着消息可靠性的提升也意味着传输复杂程度的提升。

No Local

有 0 和 1 两个可取值为 1 表示服务端不会将消息转发到ClientID等于发布消息的ClientID的客户端为 0 则相反。

Retain As Publish

有 0 和 1 两个可取值为 1 表示服务端在向此订阅转发应用消息时需要保持消息中的 Retain 标识不变为 0 则表示必须清除。

Retain Handling

指定在建立订阅时是否发送保留的消息。

0在订阅时发送保留的消息。

1仅当订阅当前不存在时才在订阅时发送保留消息。

2在订阅时不发送保留的消息。

功能4原因码

数据包 CONNACK、PUBACK、PUBREC、PUBREL、PUBCOMP、SUBACK、UNSUBACK、DISCONNECT 和 AUTH 包含原因码。小于 0x80 的原因码用于表示成功大于等于 0x80 的原因码则用于表示失败。

功能5用户属性

大多数MQTT数据包可以包含用户属性user-properties。MQTT规范没有定义用户属性的含义。

功能6有效载荷标识和内容类型

消息发布者可以指定MIME内容类型content-type如 text/plain 表示文本文件audio/aac 表示音频文件。还可以设置一个载荷标识符payload-format-indicator指示Payload是由UTF-8编码的字符数据还是其它数据组成。

功能7请求/响应

在发布消息之前MQTT客户端请求者订阅了一个响应主题response-topic。请求者将响应主题和一些相关数据包correlation-data括在请求消息中。

另一个MQTT客户端响应者接收请求消息执行一些操作并将带有相同相关数据的响应消息发布到响应主题。

该特性对应于高级消息队列协议中的远程过程调用Remote Procedure Calls对于一些投递要求比较严格的消息可以通过请求/响应来确认消息是否到达订阅端。

功能8分配的客户端标识符

如果客户端使用零长度的客户端标识符进行连接则服务器必须使用包含指定客户端标识符的CONNACK进行响应。

功能9主题别名

主题别名是一个整数值代替主题名称标识主题。可减少PUBLISH数据包的大小在主题名称较长并且在一个网络连接中重复使用相同的主题名称时非常有用。

功能10流量控制

属性Receive Maximum定义了未确认的QoS为1和2的PUBLISH报文最大数量。

功能11最大数据包大小

客户端和服务器可以独立指定它们支持的最大数据包大小。

功能12服务器发起的DISCONNECT

DISCONNECT数据包不仅可以从客户端发送到服务器还可以从服务器发送到客户端。

功能13会话过期

客户端可以在CONNECT数据包中向服务器建议会话过期间隔session-expiry-interval。服务器可以接受所提出的会话到期间隔或者在CONNACK分组中指定不同的会话到期时间间隔。

当会话到期间隔到期时客户端和服务器都将删除任何会话状态。

功能14遗嘱延迟

客户端可以在CONNECT数据包中定义遗嘱延迟间隔will-delay-interval。服务器会在遗嘱延迟间隔到期或会话过期间隔到期以先发生的为准时发布客户端的遗嘱消息。遗嘱延迟间隔的一个重要用途是避免在设备因网络波动临时断开连接但能快速恢复连接继续会话时发出遗嘱消息。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: RabbitMQ

“在RabbitMQ中使用新的MQTT 5.0功能-CSDN博客” 的相关文章