环境信息
- 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 → cluster
cluster → edge
是两个不同的方向
edge创建桥接资源时没有选择Qos的地方,我想这也是默认的配置
测试时,断网期间我监听了日志变化,没有输出错误日志。。。
我下周在测试一次,看看有没有日志变化
我猜测可能是拔网线,和关闭集群,edge判定产生了区别,拔网线可能认为自身的状态已经无法保证所以没有上报。不过既然你拔了网线,edge是从哪里收到的MQTT消息呢?设备是通过什么方式将报文发送到edge的?是不是拔了网线之后,设备彻底断网,导致的消息没有进来,所以edge本身就没有收到任何报文,恢复网络之后自然也就没有向集群发送。
边缘设备有多个网口,采集网还在运行,可以收到采集数据。