简介

服务端收到 Retain 标志为 1 的 PUBLISH 报文时,会将该报文视为保留消息,除了被正常转发以外,保留消息会被存储在服务端,每个主题下只能存在一份保留消息,因此如果已经存在相同主题的保留消息,则该保留消息被替换。

当客户端建立订阅时,如果服务端存在主题匹配的保留消息,则这些保留消息将被立即发送给该客户端。借助保留消息,新的订阅者能够立即获取最近的状态,而不需要等待无法预期的时间,这在很多场景下非常重要的。

EMQ X 默认开启保留消息的功能,可以在 etc/emqx.conf 中修改 mqtt.retain_available为 false 以禁用保留消息功能。如果 EMQ X 在保留消息功能被禁用的情况下依然收到了保留消息,那么将返回原因码为 0x9A(不支持保留消息)的 DISCONNECT 报文。

配置

EMQ X 的保留消息功能是由 emqx_retainer 插件实现,该插件默认开启,通过修改 emqx_retainer 插件的配置,可以调整 EMQ X 储存保留消息的位置,限制接收保留消息数量和 Payload 最大长度,以及调整保留消息的过期时间。

emqx_retainer 插件默认开启,插件的配置路径为 etc/plugins/emqx_retainer.conf

配置项 类型 可取值 默认值 说明
retainer.storage_type enum ramdiscdisc_only ram ram:仅储存在内存中;
disc:储存在内存和硬盘中;
disc_only:仅储存在硬盘中。
retainer.max_retained_messages integer >= 0 0 保留消息的最大数量,0 表示没有限制。保留消息数量超出最大值限制后,可以替换已存在的保留消息,但不能为新的主题储存保留消息。
retainer.max_payload_size bytesize   1MB 保留消息的最大 Payload 值。Payload 大小超出最大值后 EMQ X 消息服务器会把收到的保留消息作为普通消息处理。
retainer.expiry_interval duration   保留消息的过期时间,0 表示永不过期。如果 PUBLISH 报文中设置了消息过期间隔,那么以 PUBLISH 报文中的消息过期间隔为准。

普通消息 与 保留消息 对比 案例

普通消息 未订阅前


普通消息 订阅后,看右侧的消息窗口,没有收到订阅,没变化


保留消息 未订阅前


保留消息 订阅后,注意看右侧的消息窗口,有收到最后发的一条保留消息

EMQ-保留消息 概述和案例相关推荐

  1. EMQ X MQTT 5.0 服务器的保留消息与消息过期间隔

    保留消息 服务端收到 Retain 标志为 1 的 PUBLISH 报文时,会将该报文视为保留消息,除了被正常转发以外,保留消息会被存储在服务端,每个主题下只能存在一份保留消息,因此如果已经存在相同主 ...

  2. 【从零开始的Java开发】1-5-4 ArrayList、HashSet、HashMap 概述与案例

    文章目录 集合框架的体系结构 List概述 ArrayList 案例:在List中操作String 案例:公告管理--在ArrayList中对自定义对象的操作 Set概述 案例:在Set中操作Stri ...

  3. ML:机器学习算法中—因子模型(多变量)、时序模型/时间序列模型(主要以单变量)算法对比的简介、带有时序性的因子模型概述、案例应用之详细攻略

    ML:机器学习算法中-因子模型(多变量).时序模型/时间序列模型(主要以单变量)算法对比的简介.带有时序性的因子模型概述.案例应用之详细攻略 目录 因子模型和时序模型/时间序列模型算法的简介 1.因子 ...

  4. [Java]SpringBoot2整合mqtt服务器EMQ实现消息订阅发布入库(二)

    又到了显摆分享技术的时候了 没有看过上一篇文章的可以先看一下,这篇是在上一篇基础上接着添加功能 SpringBoot2整合mqtt服务器EMQ实现消息订阅发布入库(一) 这篇文章的流程为: 1.Spr ...

  5. vue项目新闻消息向上滚动案例

    vue项目新闻消息向上滚动案例 效果如下图所示: 代码组件如下: <template><div class="message-page"><div c ...

  6. 学习太极创客 — MQTT 第二章(三)保留消息

    视频链接:https://www.bilibili.com/video/BV1pv411b7o1/?spm_id_from=autoNext&vd_source=b91967c499b2310 ...

  7. 阿里云下Ubuntu18.04安装部署EMQ X 消息服务器

    EMQ X服务器简介 EMQ X (Erlang/Enterprise/Elastic MQTT Broker) 是基于 Erlang/OTP 平台开发的开源物联网 MQTT 消息服务器. EMQ X ...

  8. 保留消息 - MQTT 核心:第八章

    保留消息 - MQTT 核心:第八章 欢迎来到MQTT核心系列的第八章.这个系列一共有十章,用来介绍MQTT的核心特性和概念.在这章,我们将介绍保留消息. 在MQTT中,客户端是无法保障订阅方能确切收 ...

  9. 2019-07-13-mqtt-mosquitto系列14之保留消息retain

    mqtt 保留消息retain 通常,如果发布者向主题发布消息时,没有客户端订阅该主题,则该消息将被broker直接丢弃.但是,发布者可以通过设置保留消息标志来告诉代理保留该主题的最后一条消息.如在p ...

最新文章

  1. spring框架四大原则
  2. 动态调用有关的方法?
  3. Windows XP 源代码泄露,微软终于回应了~
  4. mysql给字段设置默认值,以及mysql的严格模式
  5. WPF error: does not contain a static 'Main' method suitable for an entry point
  6. 格式字符串语法,摘取自JDK6
  7. 【VS Code】vue.js ESLint + vscode 代码格式配置
  8. 站在汽修厂的角度看需求
  9. .NET Core中使用Razor模板引擎
  10. Android 获取触摸点坐标,判断滑动方向,滑动距离,滑动速度
  11. Ubuntu18.04 测试Azure Kinect DK 安装Azure Kinect传感器SDK
  12. uva 11419 最大匹配(最小点覆盖)
  13. (转)LUA与python根本就不具有可比性
  14. VC++6.0的大bug(运行成功,调试出错,溢出)的解决方案
  15. 《Python基础入门》
  16. 最详细的 paypal 支付接口开发--Java版
  17. 深度系统安装移动硬盘启动_教你用优启通U盘PE启动安装系统教程
  18. 边缘计算开源项目概述
  19. html中图片旋转木马,教你怎么用CSS3做一个图片的旋转木马效果
  20. 修复计算机系统还原,怎么给电脑系统做一键恢复

热门文章

  1. ctfshow菜鸡杯 部分wp
  2. 接口的Mock测试及Mockito使用
  3. python做客户端适合吗_太简单!只学十分钟,Python菜鸟也能开发一个区块链客户端...
  4. 【leetcode】377. 组合总和 Ⅳ(combination-sum-iv)(DP)[中等]
  5. Action Synopsis: Pose Selection and Illustration 实现
  6. Perl模块使用 = 简短例子代码集合(转帖)
  7. 学会拒绝摔倒“哭泣”,拒绝接受“溺爱”
  8. Astra奥比中光相机驱动SDK,导库
  9. 1万块钱存入银行,10年后,连本带利能取多少钱?
  10. video标签的使用