开源的5.1.6版本,有两个地方可以设置启用保留消息,请问有什么区别?

开源的5.1.6版本,有两个地方可以设置启用保留消息,请问有什么区别


感谢反馈,确实有误导。简单来说如果需要启用保留消息的话,两者都需要开启。

从配置对应上来说,通用->启用保留消息 控制的是

mqtt {
  retain_available = true
 ...
}

它表示协议层的保留消息是否启用,如果 MQTT 客户端使用 v5.0 协议链接到 EMQX,EMQX 会把改标记位,通过链接确认报文 CONNACK 发送到客户端,表示 Broker 是否支持 Retain 特性。见 5.0 协议规范 - 3.2.2.3.5 Retain Available

另外, 如果关闭该标识,但客户端仍发送 Retain 消息,EMQX 直接断开链接并回复 0x9A 的错误码

对于后者 保留消息->启用保留消息,控制的是配置:

retainer {
  enable = true
  ...
}

它是 EMQX 保留消息存储功能是否启用的配置,停用则不存储保留消息。