当前位置: 首页 > 知识库问答 >
问题:

在MQTT代理中有没有为消息提供TTL的方法

陶锋
2023-03-14

在MQTT规范中,有connect标志,用于管理服务器和客户端上的保留和状态。

clean session规范建议:

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

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

共有1个答案

冯野
2023-03-14

MQTT5.0允许为发布设置消息过期间隔。

https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_toc3901112

3.3.2.3.3消息过期间隔

服务器发送给客户端的发布数据包必须包含一个消息过期间隔,该间隔设置为接收值减去应用程序消息在服务器中等待的时间[MQTT-3.3.2-6]。有关存储状态的详细信息和限制,请参阅第4.1节。

 类似资料:
  • mosquitto.conf将最大飞行消息设置为0,持久性为true。 发布服务器QOS=2 用户QOS=2 保持活力=60 还有其他参数我应该看吗?

  • 在以下camel上下文中,我使用提供的配置了一个SEDAendpoint: 但是,发送到endpoint的消息不会被消耗。

  • 我后来理解对了。实际上,我需要一条来自android客户端的MQTT消息发送到所有其他客户端,所以我想在消息正文中包含publish关键字,这是非常错误的。MQTT本身将接收到的消息发送给所有提供的客户端,如果客户端订阅了该主题的话。

  • 问题内容: 我可以看到文档说我们可以在文档上设置,但不能在索引/索引上设置。还想知道如果我们设置它是否对性能有影响。 问题答案: 已为每个索引启用,但有效期为每个文档。 如果您希望索引“过期”,请删除它们。更简单,更高效。 是的,对性能有影响。Elasticsearch处理“过期”数据的“方式”是创建基于时间的索引。意思是,您每天或每周都会创建一个索引。在该索引中索引属于该日/周的所有内容。您决定

  • 问题内容: 我只是熟悉Apache JackRabbit。我已经完成了一些用于文档管理的多用户存储库。 如果有人同时使用它们,您能回答这些问题吗? ModeShape是否以某种方式链接到JBoss?我对JBoss AS或任何其他JBoss工具没有太多经验。我看到了对tomcat的支持,但是有很多JBossy的东西 文档说将来的发行版应该具有UI集成,这还有很长的路要走吗?它将是什么样的UI集成?是