spring-boot2集成influxDB

39 篇文章 3 订阅

自spring-boot 2.0开始,spring-boot-autoconfigure提供了influxdb的简单集成实现类InfluxDbAutoConfiguration. 该类生效条件为@ConditionalOnClass(InfluxDB.class),所以只要引入influxdb-java依赖,就会自动生效。

compile group: 'org.influxdb', name: 'influxdb-java', version: '2.16'

集成比较简单(influx本地windows版本1.6.2),代码如下:

package demo.influx;

import lombok.extern.slf4j.Slf4j;
import org.influxdb.InfluxDB;
import org.influxdb.dto.Point;
import org.influxdb.dto.Query;
import org.influxdb.dto.QueryResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * influxDB时序数据库,支持增查,不支持删改,删除可配置删除策略
 * @author tom
 */
@Slf4j
@SpringBootApplication
public class InfluxSpringApplicationDemo implements CommandLineRunner {
    public static void main(String[] args) {
        SpringApplication.run(InfluxSpringApplicationDemo.class, args);
    }


    @Autowired
    private InfluxDB influxDB;

    @Override
    public void run(String... args) throws Exception {

        influxDB.setDatabase("mydb");
        influxDB.write(
                Point.measurement("demo_api").tag("name", "hello")
                .addField("rt", 10).addField("times", 320)
                .build()
        );

        String line = Point.measurement("demo_api").tag("name", "hello")
                .addField("rt", 3).addField("times", 145)
                .build().lineProtocol();
        log.info("line protocol => {}", line);
        //retentionPolicy参数为自建的policy名称
        //create retention policy mydb_retention_policy on mydb duration 7d replication 1
        influxDB.write("mydb", "mydb_retention_policy", InfluxDB.ConsistencyLevel.QUORUM, line);
        //i 代表integer数据类型
        influxDB.write("mydb", "mydb_retention_policy", InfluxDB.ConsistencyLevel.ONE
                , "demo_api,name=hello rt=4i,times=34i");

        //默认查询是select * from mydb.autogen.demo_api
        QueryResult rs = influxDB.query(new Query("select * from demo_api", "mydb"));
        log.info("query result => {}", rs);
        if (!rs.hasError() && !rs.getResults().isEmpty()) {
            rs.getResults().forEach(System.out::println);
        }

        //查询select * from mydb.mydb_retention_policy.demo_api
        rs = influxDB.query(new Query("select * from mydb.mydb_retention_policy.demo_api", "mydb"));
        log.info("query result => {}", rs);
        if (!rs.hasError() && !rs.getResults().isEmpty()) {
            rs.getResults().forEach(System.out::println);
        }

    }
}

注意:在使用influx客户端查询插入结果时,由于自定义了retention policy,所以代码中插入的结果位于两个retention policy。

一个measurement(相当于table)内存储的记录可以属于多个retention policy,这个retention policy定义保留策略的,对于不同的策略虽然插入的measurement是同一个,但是数据会归属于插入时指定的policy。当查询不指定policy时,使用默认的autogen,所以在插入到同一个measurement不同的policy时要注意,查询要指定policy。

参考:spring-boot-features-influxdb

          doc-influxDb

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
要在Spring Boot中集成InfluxDB 2.0,你可以遵循以下步骤: 1. 添加InfluxDB 2.0依赖项: 在你的pom.xml文件中添加以下依赖项: ``` <dependency> <groupId>com.influxdb</groupId> <artifactId>influxdb-client-java</artifactId> <version>2.0.8</version> </dependency> ``` 2. 配置InfluxDB连接: 创建一个配置类,配置InfluxDB连接信息。示例代码如下: ``` @Configuration public class InfluxDBConfig { @Value("${influxdb.url}") private String url; @Value("${influxdb.token}") private String token; @Value("${influxdb.org}") private String org; @Value("${influxdb.bucket}") private String bucket; @Bean public InfluxDBClient influxDBClient() { return InfluxDBClientFactory.create(url, token.toCharArray(), org, bucket); } } ``` 在application.properties文件中配置InfluxDB连接信息: ``` influxdb.url=http://localhost:8086 influxdb.token=your_token influxdb.org=your_org influxdb.bucket=your_bucket ``` 3. 创建InfluxDB操作类: 创建一个类,用于执行InfluxDB操作。示例代码如下: ``` @Component public class InfluxDBOperations { private final InfluxDBClient influxDBClient; public InfluxDBOperations(InfluxDBClient influxDBClient) { this.influxDBClient = influxDBClient; } public void writeData(Point point) { try (WriteApi writeApi = influxDBClient.getWriteApi()) { writeApi.writePoint(point); } } public QueryResult queryData(String query) { try (QueryApi queryApi = influxDBClient.getQueryApi()) { return queryApi.query(query); } } } ``` 4. 使用InfluxDB操作类: 在需要使用InfluxDB的地方,注入InfluxDB操作类并调用相应的方法进行操作。示例代码如下: ``` @Service public class MyService { private final InfluxDBOperations influxDBOperations; public MyService(InfluxDBOperations influxDBOperations) { this.influxDBOperations = influxDBOperations; } public void writeToInfluxDB() { Point point = Point.measurement("measurement_name") .addTag("tag_name", "tag_value") .addField("field_name", "field_value") .time(System.currentTimeMillis(), WritePrecision.MS) .build(); influxDBOperations.writeData(point); } public QueryResult queryFromInfluxDB() { String query = "from(bucket:\"your_bucket\") |> range(start: -1h)"; return influxDBOperations.queryData(query); } } ``` 以上就是在Spring Boot中集成InfluxDB 2.0的步骤。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值