博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring-boot2集成influxDB
阅读量:2113 次
发布时间:2019-04-29

本文共 2810 字,大约阅读时间需要 9 分钟。

自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@SpringBootApplicationpublic 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。

参考:

         

转载地址:http://enpef.baihongyu.com/

你可能感兴趣的文章
几个基本的 Sql Plus 命令 和 例子
查看>>
PLSQL单行函数和组函数详解
查看>>
Oracle PL/SQL语言初级教程之异常处理
查看>>
Oracle PL/SQL语言初级教程之游标
查看>>
Oracle PL/SQL语言初级教程之操作和控制语言
查看>>
Oracle PL/SQL语言初级教程之过程和函数
查看>>
Oracle PL/SQL语言初级教程之表和视图
查看>>
Oracle PL/SQL语言初级教程之完整性约束
查看>>
PL/SQL学习笔记
查看>>
如何分析SQL语句
查看>>
结构化查询语言(SQL)原理
查看>>
SQL教程之嵌套SELECT语句
查看>>
几个简单的SQL例子
查看>>
日本語の記号の読み方
查看>>
计算机英语编程中一些单词
查看>>
JavaScript 经典例子
查看>>
判断数据的JS代码
查看>>
js按键事件说明
查看>>
AJAX 初次体验!推荐刚学看这个满好的!
查看>>
AJAX 设计制作 在公司弄的 非得要做出这个养的 真晕!
查看>>