版本SpringBoot2.5.7InfluxDB1.8前置知识时序数据库针对时间条件进行了专门优化,使其查询性能非常高。项目中需要对设备的GPS轨迹信息进行历史查询,是典型的时间序列数据。在集成之前,先把InfluxDB中的一些概念和传统的MySQL做一个对应:MySQLInfluxDBDatabaseDatabaseTableMeasurementColumnFieldInfluxDB中有一些特有的概念:Tag:类似于Field,但是Field不会被索引,Tag会Point:对应一条数据Series:allinadatakey-valuepairsofTagdata开始在SpringBoot中集成bom。默认情况下已经集成了InfluxDBdriver和AutoConfigure相关配置。可以直接在项目pom.xml中添加依赖,不用写versionorg.influxdbinfluxdb-java驱动适用于InfluxDB1.x版本。注意版本对应。InfluxDB2.x版本驱动坐标发生变化,SpringBoot暂未集成。有需要的可以看官方文档手动在application.yml中集成然后配置连接信息spring:influx:url:http://127.0.0.1:8086user:mlpassword:56235623由于SpringBoot已经有了InfluxDB的自动组装配置Bean,在检测到的项目中配置influx配置好后会自动组装,所以直接在代码中注入Bean即可@RequiredArgsConstructorclassTestService{privatefinalInfluxDBinfluxDB;publicvoidtest(){//首先构造Point对象Pointpoint=Point.measurement("position").tag("llocation",positionMqttVO.getAssetId().toString()).addField("lng",positionMqttVO.getLng()).addField("lat",positionMqttVO.getLat()).time(System.currentTimeMillis(),TimeUnit.MILLISECONDS).build();//写入influxDB.setDatabase("ame").write(point);}}如果此时直接启动项目,会报错Causedby:java.lang.NoSuchFieldError:在okhttp3.internal.Util.(Util.kt:70)~[okhttp-4.9.3.jar:na]在okhttp3.internal.concurrent.TaskRunner.(TaskRunner.kt:309)~[okhttp-4.9.3.jar:na]在okhttp3.ConnectionPool.(ConnectionPool.kt:41)~[okhttp-4.9.3.jar:na]在okhttp3.ConnectionPool.(ConnectionPool.kt:47)~[okhttp-4.9.3.jar:na]在okhttp3.OkHttpClient$Builder.(OkHttpClient.kt:471)~[okhttp-4.9.3.jar:na]在org.springframework.boot.autoconfigure.influx.InfluxDbAutoConfiguration.determineBuilder(InfluxDbAutoConfiguration.java:60)~[spring-boot-autoconfigure-2.5.7.jar:2.5.7]在org.springframework.boot.autoconfigure.influx.InfluxDbAutoConfiguration.influxDb(InfluxDbAutoConfiguration.java:51)~[spring-boot-autoconfigure-2.5.7.jar:2.5.7]在java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(本机方法)~[na:na]在java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)~[na:na]在java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)~[na:na]在java.base/java.lang.reflect.Method.invoke(Method.java:566)~[na:na]atorg.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)~[spring-beans-5.3.13.jar:5.3.13]...省略了65个常见框架通过查看依赖树(mvndependency:tree-U)可以看出,这是因为InfluxDB驱动中集成的OKHttp版本太旧。我们需要排除依赖,引入最新的OKhttporg.influxdbinfluxdb-javacom.squareup.okhttp3okhttpcom.squareup.okhttp3logging-interceptorcom.squareup.okhttp3okhttp<版本>4.9。3com.squareup.okhttp3logging-interceptor4.9.3至此再启动即可正常运行