emqx-edge断网续传

环境信息

  • EMQ X 版本:4.2.5 k8s部署3节点集群
  • 操作系统及版本:centos7.8
  • 其他
    边缘设备:树莓派
    边缘版本:emqx-edge 4.2.5

问题描述

emqx-edge的断网续传能力,我是这么测试的:
1.在边缘设备上,emqx-edge数据桥接到服务器的emqx集群,在将集群停止一段时间后在开启,这样会收到断网期间的数据。
2.将边缘设备的网线拔出一段时间,重新插上网线没有收到断网期间的数据。
请问第2种情况下为什么没有触发续传呢

配置文件及日志

配置均为默认配置,没有报错日志。

桥接的实现方式是发起桥接方充当一个设备,连接到被桥接的 borker 订阅发布消息。你描述的情况就是桥接发起方(边缘设备)可以视为一个终端,集群挂了终端业务还在进行,但是终端挂了集群并不会为它一直保留着消息,因为不确定他还能不能上线,保存的时间无法控制。

请问 终端挂了集群并不会为它一直保留着消息 这句话要怎么理解呢,这里不应该是终端主动发消息吗,我的理解是当终端网络断开(此时edge还是会收到边端的消息,但是桥接到集群失败),会将消息缓存,当网络回复后将缓存信息发出去。

边缘设备断网期间,集群是正常工作的,并不会一直保留着消息等待边缘设备上线之后发给边缘设备。


Edge文档是这么说的

edge → cluster
cluster → edge
是两个不同的方向

我测试的就是edge → cluster啊

消息的QOS等级是?

edge创建桥接资源时没有选择Qos的地方,我想这也是默认的配置

设备上来的消息QoS等级

设备采集到的消息发到edge的Qos为0

现在看不出问题,方便提供一下日志吗?

测试时,断网期间我监听了日志变化,没有输出错误日志。。。
我下周在测试一次,看看有没有日志变化

我猜测可能是拔网线,和关闭集群,edge判定产生了区别,拔网线可能认为自身的状态已经无法保证所以没有上报。不过既然你拔了网线,edge是从哪里收到的MQTT消息呢?设备是通过什么方式将报文发送到edge的?是不是拔了网线之后,设备彻底断网,导致的消息没有进来,所以edge本身就没有收到任何报文,恢复网络之后自然也就没有向集群发送。

边缘设备有多个网口,采集网还在运行,可以收到采集数据。

好的,现在需要日志来看一下edge的判定情况。