如果订阅客户端一段时间失去连接,Emqx5.0可以储存传感器上传的数据,然后将之前的历史数据发布给重新连接的客户端吗?

如题,如果订阅客户端过去一段时间与MQTT服务器失去连接,Emqx5.0可以储存传感器上传的数据,然后将之前的历史数据发布给重新连接的客户端吗?如果可以需要怎么去实现呢?
谢谢大家!

现在仅支持通过 “EMQX 保留会话的功能”来达到存储部分消息的能力:

  1. 订阅端,通过 clean-session = false 连接到 EMQX
  2. 当重连后,EMQX 回将会话中未投递的消息,都重新投递给该客户端。

但这样仍存在缺陷:

  1. 会话仅存储在内存中,节点关闭后消息会丢失
  2. 存储上限取决于 mqueue_len 的配置,当超过该配置后,新的消息会被丢弃

cc @Benniu @wivwiv

请教一下可以通过哪些方式能实现储存和发布历史数据的功能呢?

开源需要二次开发实现,可以使用webhook 方式,webserver 测进行存储,你业务从你自己存储获取历史数据。企业版可以通过规则引擎直接和第三方存储集成。

已规划到 5.2.0