一、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 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);
}
}