将 Influx 线路协议与 QuestDb 一起使用时出现重复记录

Duplicate records when using Influx line protocol with QuestDb

我正在使用 QuestDb 并通过点赞发布记录

influxDB = InfluxDBFactory.connect("http://localhost:9000", username, password);
influxDB.setDatabase(database);
influxDB.enableBatch(BatchOptions.DEFAULTS);
influxDB.write(Point.measurement(TABLE_NAME)
                .addField("ID",ir.getid())
                .addField(....)
                .build());

我们不发送时间戳,所以 QuestDb 插入服务器时间,运行 它带有一个工作线程服务器选项。

每个 ID 都是唯一的,但是当我查询 QuestDb 时,我有时会看到 5 条记录具有相同的 ID,就好像 QuestDb 创建了重复项一样。

这里有什么问题吗?

除了时间戳彼此相差大约 10 秒外,重复项具有所有相同的值。

QuestDb 不支持 HTTP 连接,它支持 TCP。

可能发生的情况是您打开到端口的 HTTP 连接,它打开底层 TCP 套接字连接并发送 HTTP headers,QuestDb 忽略 headers 作为无效消息并解析有效的 Influx 协议行.然后 Influx 库没有收到任何响应,re-sends 在配置的时间间隔后再次收到消息,然后再次......这里你得到了重复项

切换到 TCP 连接并且不使用 Influx 库使用 https://questdb.io/docs/develop/insert-data/ 或 telegraf 之类的东西发送消息,或者使用 UDP