解决Telegraf集群中EMQ共享订阅消息重复消费的问题
在使用Telegraf集群从EMQ收集数据并写入InfluxDB时,避免消息重复写入至关重要。本文针对“$queue/topic/#订阅无效”的问题,提供有效的解决方案。
用户反馈,常规topic/#订阅虽然能工作,却导致消息重复收集。而尝试使用EMQ的共享订阅模式$queue/topic/#却失败。这并非简单的订阅规则错误,而是EMQ、Telegraf配置及消息队列机制的综合问题。
以下几个方面需要仔细检查:
topic
参数正确设置为$queue/topic/#
,且无其他冲突配置。注意Telegraf MQTT插件版本,确保其支持共享订阅。client_id
也必须唯一。重复的client_id
会导致消息重复,即使使用了共享订阅。确保每个Telegraf实例的MQTT插件配置中client_id
参数都不同。通过以上步骤排查,即可找到并解决Telegraf集群共享订阅EMQ消息时出现的重复写入问题,最终实现每条消息仅被一个Telegraf实例消费并写入InfluxDB。