0

MQTT 新手在这里

使用 EMQX 代理的 MqttNet 库在 .NET 上开发:

我正在使用 MQTTv5 功能“用户属性”在发布时向我的消息添加时间戳。这是完美的工作。

但是,我也需要标记 LWT 消息。在我的连接方法中,我可以提供一个包含时间戳用户属性的 LWT。现在,当我使用 MQQTX 桌面客户端订阅我的 LWT 主题时;我收到了这些消息和 LWT;到目前为止,一切都很好。

但是当我终止我的程序进程时(由此,不优雅地断开连接);我立即收到一条 LWT 消息。问题是我的“时间戳”用户属性具有建立连接时的时间戳(以及 LWT 第一次设置)。

我可以在我的连接方法中将值留空,所以空值 = 不优雅的断开连接;但这不是很优雅

是否有可能拦截从代理发送的 LWT 消息并设置时间戳?

编辑:我找到了“规则引擎”,它让我使用代理时间戳。但到目前为止我只能将它添加到有效负载中(最好是用户属性) EMQ 规则引擎测试

4

1 回答 1

1

我不这么认为,由代理设置时间戳,因为当它注意到客户端已经离开时,它实际上是发布 LWT 消息的。

我不相信 MQTT 规范级别有任何东西(我真的需要重新阅读 v5 消息属性的东西)来做到这一点,但如果它支持,它可能是可以通过代理中的适当插件来完成的这样的事情。

于 2021-12-14T14:11:34.027 回答