InfluxDB入门系列教程⑧ 在SpringBoot中的应用

一、pom依赖

            <dependency>
                <groupId>org.influxdb</groupId>
                <artifactId>influxdb-java</artifactId>
                <version>${influxdb.version}</version>
            </dependency>

二、application.properties

influx: 
  url: http://x.x.x.x:8086
  user: root
  password: password
  database: mydb

三、InfluxDB工具类


import org.influxdb.InfluxDB;
import org.influxdb.InfluxDBFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Configurable;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.beans.factory.config.YamlPropertiesFactoryBean;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.env.YamlPropertySourceLoader;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;


@Component
public class MyInfluxDB {
    
    
    private Logger logger = LoggerFactory.getLogger(getClass());

    @Value("${influx.user}")
    private String user;

    @Value("${influx.password}")
    private String password;

    @Value("${influx.url}")
    private String url;

    @Value("${influx.database}")
    private String database;

//    private String retentionPolicy;

    private InfluxDB influxDB;

    public MyInfluxDB() {
    
    
        logger.info("MyInfluxDB");
    }

    @PostConstruct
    public void build(){
    
    
        logger.info("url="+url);
        logger.info("user="+user);
        logger.info("password="+password);
        logger.info("database="+database);

        if(influxDB == null){
    
    
            influxDB = InfluxDBFactory.connect(this.url,this.user,this.password);
        }
        influxDB.setDatabase(this.database);
        influxDB.setLogLevel(InfluxDB.LogLevel.BASIC);
        logger.info("build");
    }

    public InfluxDB getInfluxDB() {
    
    
        return influxDB;
    }

    @Override
    public String toString() {
    
    
        return "MyInfluxDB{" +
                "user='" + user + '\'' +
                ", password='" + password + '\'' +
                ", url='" + url + '\'' +
                ", database='" + database + '\'' +
                ", influxDB=" + influxDB +
                '}';
    }
}

四、InfluxDB Controller


import com.alibaba.fastjson.JSON;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.ip.IpUtils;
import com.ruoyi.device.MyInfluxDB;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.influxdb.dto.Point;
import org.influxdb.dto.Query;
import org.influxdb.dto.QueryResult;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.concurrent.TimeUnit;

@Api("InfluxDB")
@RestController
@RequestMapping("/influx")
public class InfluxDBController {
    
    
    private Logger logger = LoggerFactory.getLogger(getClass());

    @Value("${influx.database}")
    private String database;

    @Autowired
    private MyInfluxDB mInfluxDB;

    @ApiOperation("读取cpu表")
    @GetMapping("/get/cpu")
    public AjaxResult getCpu(){
    
    
        if (mInfluxDB==null){
    
    
            logger.debug("mInfluxDB == null");
            return AjaxResult.error("数据库不存在");
        }
        String sql = "select * from cpu";
        Query query = new Query(sql, database);

        QueryResult queryResult = mInfluxDB.getInfluxDB().query(query, TimeUnit.MILLISECONDS);
        List<QueryResult.Result> resultList =  queryResult.getResults();
        String result = queryResult.toString();
        logger.debug(result);
        return AjaxResult.success(resultList);
    }

    @ApiOperation("插入cpu表")
    @PostMapping("/insert/cpu")
    public AjaxResult insertCpu(){
    
    
        if (mInfluxDB==null){
    
    
            logger.debug("mInfluxDB == null");
            return AjaxResult.error("数据库不存在");
        }
        logger.debug(mInfluxDB.toString());

        Point.Builder builder = Point.measurement("cpu");
        logger.debug("time="+System.currentTimeMillis());
        builder.time(System.currentTimeMillis(),TimeUnit.MILLISECONDS);
        builder.tag("host",IpUtils.getHostName());
        builder.tag("region","us");
        builder.addField("value",new Random().nextFloat());
        Point point = builder.build();
        mInfluxDB.getInfluxDB().write(point);
        return AjaxResult.success(200);
    }
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/kangweijian/article/details/109751139