【无标题】Springboot整合influxdb2.0

	首先为了方便本地测试,可以选择下载window版的influxdb,我在官网下载的是influxdb2-2.0.9-windows-amd64.zip。

然后在解压,在该文件夹下cmd进入命令窗口,用命令 influxd.exe回车就启动了。
【无标题】Springboot整合influxdb2.0_第1张图片
访问http://localhost:8086/就能看到界面了。

influxdb2.0和1.x的区别很大,pom中引入:

  <dependency>
            <groupId>com.influxdb</groupId>
            <artifactId>influxdb-client-java</artifactId>
            <version>3.0.1</version>
   </dependency>

yml的配置:

spring:
  influx:
    url: http://localhost:8086
    token: vGLGb5rK5f3-l_uR9JEfLM1iNgOJfMPjkGXA9xANd2SbmXeKbneV1vshdT_nsxtleHokXzP-M6f0ESXZyJJSNg==   #可以从页面上获取
    org: 
    bucket: mydb

配置类

/**
 * influx配置类
 */
@Configuration
public class InfluxDbConfig {

    @Value("${spring.influx.token:''}")
    private String token;
    @Value("${spring.influx.url:''}")
    private String url;
    @Bean
    public InfluxDBClient influxDBClient() {

        System.out.println("=============="+token+"==============");
        System.out.println("=============="+url+"==============");
        InfluxDBClient influxDBClient = InfluxDBClientFactory.create(url, token.toCharArray());
        influxDBClient.setLogLevel(LogLevel.BASIC);
        return influxDBClient;

    }
}

入库

@Service
public class InsertServiceImpl implements InsertService {

    @Autowired
    private InfluxDBClient influxDBClient;

    @Value("${spring.influx.org}")
    private String org;
    @Value("${spring.influx.bucket}")
    private String bucket;

    public void insertData(String measurement, Map<String, Object> fields) {

        System.out.println("=============开始插入数据=============");
        WriteOptions writeOptions = WriteOptions.builder()
                .batchSize(5000)
                .flushInterval(1000)
                .bufferLimit(10000)
                .jitterInterval(1000)
                .retryInterval(5000)
                .build();
        try (WriteApi writeApi = influxDBClient.getWriteApi(writeOptions)) {
            String address = fields.get("address").toString();
            fields.remove("address");
            Point point = Point
                    .measurement(measurement)
                    .addTag("address", address)
                    .addFields(fields)
                    .time(Instant.now(), WritePrecision.NS);
            writeApi.writePoint(bucket, org, point);
        }
    }
}

查询

@Service
public class SelectServiceImpl implements SelectService {
    @Value("${spring.influx.org:''}")
    private String org;

    @Value("${spring.influx.bucket:''}")
    private String bucket;

    @Autowired
    private InfluxDBClient influxDBClient;

    public List<FluxTable> selectData() {

        System.out.println("==============开始查询数据================");
        String sql = "from(bucket: \"%s\") |> range(start: 0)";
        sql +="  |> filter(fn: (r) => r._measurement == \"%s\" and";
        sql +="  r._field == \"%s\")";
        sql +="  |> yield()";
        String flux = String.format(sql, bucket,"mq","name");
        QueryApi queryApi = influxDBClient.getQueryApi();
        List<FluxTable> tables = queryApi.query(flux,org);
        System.out.println(tables.toString());
        return tables;
    }
}

插入接口

@RestController
public class InsertController {

    @Autowired
    private InsertService insertService;


    @RequestMapping("/test1")
    public void insertDataController(@RequestParam String measurement, @RequestBody Map<String, Object> fields) {
        insertService.insertData(measurement,fields);
        System.out.println("================插入数据成功=============");
    }
}

查询接口

@RestController
public class SelectController {
    @Autowired
    private SelectService selectService;

    @GetMapping("/test2")
    public List<FluxTable> selectDataController() {

        System.out.println("===========查询数据完成=============");
        return selectService.selectData();
    }
}

完事

你可能感兴趣的:(java,spring,boot,spring)