Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >有没有办法在MQTT代理中为消息提供TTL?

有没有办法在MQTT代理中为消息提供TTL?
EN

Stack Overflow用户
提问于 2018-01-02 04:28:07
回答 2查看 6.7K关注 0票数 2

在MQTT规范中,有控制服务器和客户端的保持和状态的连接标志。

干净的会话规格说明建议:

3.1.2.4清洁会话位置:连接标志字节的第1位。 此位指定会话状态的处理。客户端和服务器可以存储会话状态,以便在网络连接序列中继续可靠的消息传递。此位用于控制会话状态的生存期。 如果CleanSession设置为0,服务器必须根据当前会话中的状态(由客户端标识符标识)恢复与客户端的通信。如果没有与客户端标识符关联的会话,服务器必须创建新会话。客户端和服务器必须在客户端和服务器断开连接后存储会话MQTT-3.1.2-4。 将CleanSession设置为0的会话断开后,服务器必须存储进一步的QoS 1和QoS 2消息,这些消息与客户端断开连接时的任何订阅相匹配,作为会话状态的一部分

因此,每当客户端在断开连接后再次连接时,代理将中继所有未被确认的QoS-1和QoS-2消息。经纪人有个州。为了维护每个客户端的状态,服务器将使用一些数据库进行保留。是否有办法为这些消息状态(服务器将存储的)提供生存时间。如何告诉经纪人放弃(即,不转发)任何旧的信息,比如说5天。

基本上,我们希望在QoS-1中使用干净的session =0;但是如何用旧消息清除代理状态呢?不希望收到超过5天的旧消息,即使是在未被确认的情况下。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-27 15:53:44

MQTT 5.0允许为发布设置消息过期间隔。

Toc3901112

3.3.2.3.3消息到期时间 2 (0x02) Byte,消息到期间隔的标识符。 后面是四字节整数,表示消息到期时间间隔。 如果存在,则四个字节值是应用程序消息的生存期(以秒为单位)。如果消息过期时间已经过去,而服务器没有设法开始向匹配的订阅服务器传递,那么它必须删除该订阅服务器MQTT-3.3.2-5的消息副本。 如果没有,则应用程序消息不会过期。 服务器发送到客户端的发布数据包必须包含设置为接收值的消息过期间隔,减去应用程序消息在Server 3.3.2-6中等待的时间。有关存储状态的详细信息和限制,请参阅4.1节。

票数 4
EN

Stack Overflow用户

发布于 2018-01-02 11:05:28

简单地说,你不能(同时保持在v3.0规范内)。

根据规范,客户端的持久状态需要无限期地保持。

您没有提到您使用的是哪个经纪人,但蚊子确实有以下(无标准)选项:

persistent_client_expiration持续时间 此选项允许持久化客户端(那些将干净会话设置为false的客户端)被移除,如果它们没有在特定的 时间框架。这是一个非标准的选择。就MQTT规范而言,持久性客户永远存在。 设计糟糕的客户端可能会将干净会话设置为false,同时使用随机生成的客户端id。这将导致持久的客户端 永远不会重新连接。此选项允许删除这些客户端。 过期期应为整数,其后分别为小时、日、周、月和年的h_d_m。例如: persistent_client_expiration 2m persistent_client_expiration 14d persistent_client_expiration 1y,因为这是一个非标准的选项,默认的如果不设置的话就是永远不过期持久客户端。

这意味着,如果客户端脱机时间超过指定时间,则该客户端的所有排队消息都将被转储(不再排队)。

这可能是你能得到的最接近你想要的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48061029

复制
相关文章
TTL队列/消息
队列上并没有TTL标记, 所以这不是TTL队列, 这个时候不要启动消费者, 直接启动生产者, 发送一条消息
彼岸舞
2022/10/06
1.1K0
TTL队列/消息
Nginx 代理gRPC—为 Skywalking 提供负载均衡
Apache Skywalking 是一款优秀的分布式链路追踪系统以及 APM 系统,但在社区的实现中,并没有着重考虑客户端负载的问题。因为社区已经有很多对 gRPC 的代理的成熟方案(Skywalking 中 Agent 探针与后端主要通过 gRPC 方式通信)。
Jared.Tan
2020/06/19
3.1K1
Nginx 代理gRPC—为 Skywalking 提供负载均衡
在 Windows 上搭建 MQTT 消息服务器
MQTT 已经是物联网事实上的标准通信协议。在目前市面上提供的各类开源 MQTT 服务器中,最常见的是 Linux 平台为基础,对于 Windows 平台的支持较少,即使支持也存在性能较弱、功能单一、版本兼容性等问题。
EMQ映云科技
2022/09/22
4.6K0
在物联网世界中通过AI为边缘提供动力
在当今的数字世界中,人工智能和物联网正在深刻改变我们生活的许多方面。连接到网络的IoT设备数量正以惊人的速度爆炸。根据数据中心提供的数据,到2025年,我们将拥有超过410亿台互联设备。
用户2605137
2022/04/12
4330
RabbitMQ之ttl(过期消息)解读
TTL(Time To Live),也就是过期时间,RabbitMQ中可以对消息和队列设置TTL(消息的过期时间),消息在队列的生存时间一旦超过设置的TTL值,就称为dead message, 消费者将无法再收到该消息。
一个风轻云淡
2023/10/06
9680
MQTT-消息协议
MQTT(消息队列遥测传输)是ISO 标准下基于发布/订阅范式的消息协议。它工作在 TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议。
胡齐
2020/05/22
2K0
使用 Nexus OSS 为 Docker 镜像提供代理/缓存功能
在企业环境中工作,无论是商业组织还是非商业组织,你会发现在互联网上获取信息存在着种种限制。
LinuxSuRen
2020/05/15
6.2K3
使用 Nexus OSS 为 Docker 镜像提供代理/缓存功能
[快速入门]如何在Ubuntu 18.04上安装和保护Mosquitto MQTT消息传递代理
MQTT是一种机器到机器的消息传递协议,旨在为“物联网”设备提供轻量级的发布/订阅通信。Mosquitto是一种流行的MQTT服务器(或MQTT中的代理),具有出色的社区支持,易于安装和配置。
信姜缘
2018/09/29
2.8K1
死信队列 和消息TTL过期代码
先从概念解释上搞清楚这个定义,死信,顾名思义就是无法被消费的消息,字面意思可以这样理解,一般来说,producer将消息投递到broker或者直接到queue里了,consumer从queue取出消息进行消费,但某些时候由于特定的原因导致queue中的某些消息无法被消费,这样的消息如果没有后续的处理,就变成了死信,有死信自然就有了死信队列。
一个风轻云淡
2022/11/13
3030
死信队列 和消息TTL过期代码
MQTT 5.0 消息发布流程
MQTT 5.0 协议对部分 QoS 报文,以及报文处理的流程做了一些升级,本文对此这部分升级的内容做简单的介绍。
科控物联
2022/03/29
9900
MQTT 5.0 消息发布流程
消息通讯——springboot集成MQTT
可以下载: 链接:https://pan.baidu.com/s/1c9CfyhT4CSY2FEOa1OgxPw 提取码:siwg 也可以用对应的cdn 地址
不愿意做鱼的小鲸鱼
2022/09/26
3.3K0
消息通讯——springboot集成MQTT
在 NPM 中设置代理
要在 NPM 中设置代理,您需要使用 `npm config set proxy` 命令。以下是一个详细的教程:
用户614136809
2023/10/17
2.2K0
在Mac上为其他设备开启代理
前些日子,想要查看一个Release版本的HTTP请求,由于已经是发布版本,日志已然关闭,遂开始从HTTP代理的思路着手。
技术小黑屋
2018/09/05
6.5K0
在Mac上为其他设备开启代理
EMQ百万级MQTT消息服务
EMQ官方地址:http://emqtt.com/ EMQ中文文档:http://emqtt.com/docs/v2/guide.html 1.ACL鉴权规则化 在正常业务使用下对于客户端的行为可以使
用户1263954
2018/06/22
2.4K0
MQTT 大消息失败原因排查
小组内使用 MQTT 协议搭建了一个聊天服务器,前天在测大消息(超过5000汉字)时,连接直接变得不可用,后续发送的消息全部都收不到回复。
Dylan Liu
2019/07/26
3.4K0
酷炫MQTT实现消息推送
首先在实现本功能之前我们需要储备一下预备知识,大家可以看我的前两篇文章以及官网,了解MQTT的基本常识: MQTT入门篇
先知先觉
2019/01/21
2.4K0
如何使用RabbitMQ和Python的Puka为多个用户提供消息
只有在安装和配置软件后,才能使用RabbitMQ发送和接收消息,安装教程可以参考CentOS安装RabbitMQ的教程。
木纸鸢
2018/08/07
2.1K0
为同行提供服务:华为AP刷新固件,并且在AC中配置上线
昨天帮助同行远程调试华为的AC和AP,却总是断线,改了AC上面的VLAN1的管理IP,虽然AC不断线了,但是AP无法上线,提示版本不匹配。
IT狂人日志
2022/05/18
1.8K0
为同行提供服务:华为AP刷新固件,并且在AC中配置上线
最火的物联网技术MQTT,其服务质量QoS的三个级别分别是什么意思,本文一定对您有帮助!
MQTT是在 TCP/IP 之上使用的轻量级发布-订阅协议,常用于物联网的场景,MQTT 使用消息代理在发布消息的发送者和对这些消息感兴趣的接收者之间分派消息,同一个客户端可以发布和订阅消息。
网络技术联盟站
2022/10/14
7.7K0
最火的物联网技术MQTT,其服务质量QoS的三个级别分别是什么意思,本文一定对您有帮助!
MQTT 保留消息是什么?如何使用?
发布者发布消息时,如果 Retained 标记被设置为 true,则该消息即是 MQTT 中的保留消息(Retained Message)。MQTT 服务器会为每个主题存储最新一条保留消息,以方便消息发布后才上线的客户端在订阅主题时仍可以接收到该消息。
EMQ映云科技
2022/10/27
2.1K0

相似问题

有办法控制MQTT代理的消息输出速度吗?

11

如果队列已经为消息提供了TTL,那么我可以为消息提供自定义TTL吗?

12

有没有办法在Android中为Room记录设置TTL (过期)?

18

Python、MQTT代理、发布消息

17

为iOS配置MQTT代理

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文