Telegraf MQTT 侦听器如何指定"clean = false?"



在这篇文章中,我问是否有可能将ActiveMQ Artemis中的消息保持在队列中,直到所有订阅者都收到它,答案是这可以使用clean = false标志来完成。

由于公司防火墙的限制,我还没有测试过这个,但我认为MQTT"清洁";参数可以在Telegraf MQTT侦听器中通过"persistent_session = true"参数-没有"clean"参数可用。

但是我想知道MQTT如何区分特定订阅者何时处于脱机状态,何时订阅者进程已被终止?如果终止Telegraf进程,它将无法发送取消订阅命令,因此消息将被永久保存,或者直到达到某个消息过期限制(实际上,这可能是可以的)。

基本上问题是,如何指定"clean"的参数。

不同的MQTT客户机实现将以不同的方式表示协议语义。在这种情况下,似乎MQTT的Telegraf输入插件将CONNECT控制数据包的CleanSession标志表示为persistent_session

关于persistent_session的文档是这样说的:

## Persistent session disables clearing of the client session on connection.
## In order for this option to work you must also set client_id to identify
## the client.  To receive messages that arrived while the client is offline,
## also set the qos option to 1 or 2 and don't forget to also set the QoS when
## publishing.

因此,将persistent_session设置为true似乎相当于将CleanSession标志设置为false

相关内容

  • 没有找到相关文章

最新更新