在RabbitMQ中使用新的MQTT 5.0功能

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)。服务器会在遗嘱延迟间隔到期或会话过期间隔到期(以先发生的为准)时发布客户端的遗嘱消息。遗嘱延迟间隔的一个重要用途是,避免在设备因网络波动临时断开连接,但能快速恢复连接继续会话时发出遗嘱消息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/102450.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JMeter接口测试:简单到离谱(只需Python和几行代码)

JMeter是一款开源的负载测试工具,可以进行各种类型的性能和功能测试,其中包括接口测试。本文将介绍如何使用Python语言利用JMeter进行接口测试,并提供一些实用的技巧和最佳实践。 同时,我也准备了一份软件测试视频教程&#xff0…

【【萌新的SOC学习之GPIO之MIO控制LED实验程序设计】】

萌新的SOC学习之GPIO之MIO控制LED实验程序设计 如何设置完GPIO并且传递数据 我们先了解GPIO引脚的配置 每一个GPIO引脚都可以设置成输入输出 ,只有GPIO8 7 只能作为输出 我们现在做一个例子 GPIO 的bank我们知道有4个 bank0 1 2 3 DIRM_0 就是第一个bank 需要写入…

访问Apache Tomcat的manager页面

配置访问Tomcat manager页面的用户名、密码、角色 Tomcat安装完成后&#xff0c;包含了一个管理应用&#xff0c;默认安装在 <Tomcat安装目录>/webapps/manager 例如&#xff1a; 要使用管理页面的功能&#xff0c;需要在conf/tomcat-users.xml文件中配置用户、密码及…

我用了多年的前端框架,强烈推荐!

大家好&#xff0c;我是鱼皮&#xff0c;今天给大家分享一个我自己用了多年、现在团队也在用的前端框架 —— Ant Design Pro。 什么是 Ant Design Pro&#xff1f; Ant Design Pro 是由蚂蚁金服开发的、基于 Ant Design 组件库的开发框架&#xff0c;专门用于构建企业级管理…

LeetCode【15】三数之和

题目&#xff1a; 解析&#xff1a; 参考&#xff1a;https://zhuanlan.zhihu.com/p/111715985 代码&#xff1a; public static List<List<Integer>> threeSum(int[] nums) {// 先排序Arrays.sort(nums);List<List<Integer>> result new ArrayLis…

python pip安装超时使用国内镜像

网络环境差的时候需要我们独立的进行相对应的包下载离线安装&#xff0c;或者给pip 加上 国内的镜像源比如加上清华的镜像源&#xff1a; 参考网址&#xff1a;pypi | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror https://mirrors.tuna.tsinghua…

day 2 2.3.2 类和对象

具有相同或相似性质的一组对象的抽象就是类 null只能被转换成引用类型&#xff0c;不能转换成基本类型&#xff0c;因此不要把一个null值赋给基本数据类型的变量 Java语言支持的类型分为两类&#xff1a;基本类型和引用类型 基本类型包括boolean类型和数值类型。数值类型有整…

springcloud学习笔记(3)-服务管理组件Nacos

Nacos简介 在2中学习了服务治理中心eureka&#xff0c;而本节的nacos来自springcloud alibaba。 Nacos也是一个服务注册和管理的组件。 Nacos 支持几乎所有主流类型的“服务”的发现、配置和管理 官方文档 快速开始 | Spring Cloud Alibaba (aliyun.com) 概述 | Spring C…

Websocket获取B站直播间弹幕教程——第二篇、解包/拆包

教程一、Websocket获取B站直播间弹幕教程 — 哔哩哔哩直播开放平台 1、封包 我们连接上B站Websocket成功后&#xff0c;要做两件事情&#xff1a; 第一、发送鉴权包。第二、发送心跳包&#xff0c;每30秒一次&#xff0c;维持websocket连接。 这两个包不是直接发送过去&…

yolov8 (2) : 模型训练

yolov8 github: https://github.com/ultralytics/ultralytics yolov8 网络详解参见: YOLOv8 (1) : 网络讲解1. 环境安装 安装ultralytics包pip install ultralytics在终端输入yolo命令࿰

使用wireshark解密ipsec ISAKMP包

Ipsec首先要通过ikev2协议来协商自己后续协商所用的加解密key以及用户数据的esp包用的加解密包。 ISAKMP就是加密过的ike-v2的加密包&#xff0c;有时候我们需要解密这个包来查看协商数据。如何来解密这样的包? 首先导出strongswan协商生成的各种key. 要能导出这些key&#…

适合自学的网络安全基础技能“蓝宝书”:《CTF那些事儿》

CTF比赛是快速提升网络安全实战技能的重要途径&#xff0c;已成为各个行业选拔网络安全人才的通用方法。但是&#xff0c;本书作者在从事CTF培训的过程中&#xff0c;发现存在几个突出的问题&#xff1a; 1&#xff09;线下CTF比赛培训中存在严重的 “最后一公里”问题 &#…

身份证号码,格式校验:@IdCard(自定义注解)

目标 自定义一个用于校验 身份证号码 格式的注解IdCard&#xff0c;能够和现有的 Validation 兼容&#xff0c;使用方式和其他校验注解保持一致&#xff08;使用 Valid 注解接口参数&#xff09;。 校验逻辑 有效格式 符合国家标准。 公民身份号码按照GB11643&#xff0d;…

Vue3中使用tinymce全功能演示,包括开源功能

效果图&#xff1a; 1、下载插件: npm i tinymce npm i tinymce/tinymce-vue 2、在node_modules文件夹中找到tinymce下的skins复制到项目public文件夹中 &#xff08;可以先创建一个tinymce文件夹&#xff09;&#xff1a; 3、在tinymce官网中下载中文包&#xff0c;并放在刚…

pytorch中nn.DataParallel多次使用

pytorch中nn.DataParallel多次使用 import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import DataLoader# 定义模型 class MyModel(nn.Module):def __init__(self):super(MyModel, self).__init__()self.fc nn.Linear(10, 1)def forwa…

STM32简介

STM32是ST公司基于ARM Cortex-M内核开发的32位微控制器&#xff0c;常应用在嵌入式领域如&#xff1a; 智能车&#xff08;用stm32做寻迹小车&#xff0c;读取光电传感器或者摄像头数据&#xff0c;然后驱动电机前进和转弯&#xff09;&#xff1b; 无人机&#xff08;用stm3…

Facebook广告账户被封?最全防封及申诉指南

Facebook广告是海外营销的一大利器&#xff0c;但是随着互联网的发展&#xff0c;有部分不法分子正在利用他进行盈利&#xff0c;导致Facebook官方安全审核日益严格&#xff0c;不少卖家遭遇封号问题&#xff01;这篇文章就来教你如何更好地管理 Facebook广告帐户&#xff0c;实…

windows10系统-15-markdown编辑器和文本复制工具Textify

1 markdown编辑器 Markdown是一种轻量级标记语言&#xff0c;创始人为约翰格鲁伯。 它允许人们使用易读易写的纯文本格式编写文档&#xff0c;然后转换成有效的XHTML&#xff08;或者HTML&#xff09;文档。这种语言吸收了很多在电子邮件中已有的纯文本标记的特性。 1.1 Typo…

EXCEL——根据单元格值设置不同色阶

方法&#xff1a;开始—>条件格式—>色阶&#xff08;默认色阶或复杂色阶&#xff09;。 一、默认色阶 如图&#xff0c;可选择自定义的色阶模式。 二、复杂色阶 1、如图&#xff0c;点击"其他规则" 2、选择复杂格式 此时可以看到&#xff0c;支持多种格式…

Vue实战项目1:跑马灯效果

Vue实战项目1&#xff1a;跑马灯效果 目录 一、效果预览二、编写思路三、整体代码展示 一、效果预览 二、编写思路 两个按钮用于启动和停止&#xff0c;绑定点击事件&#xff0c;使用v-on&#xff0c;可以简写为 <input type"button" value"跑起来" c…