InfluxDB 多数据库

一般来说InfluxDB多台主机的可能性很小,主要还是同一台主机不同数据库(database),这里介绍一种方式能够动态配置数据库,也可以设置不同主机等信息。

先看配置文件:

influxdb:
  host1: http://localhost:8086
  host2: http://localhost:8086
  database1: test1
  database2: test2

InfluxDB设置:

package com.test.influx;

import org.influxdb.InfluxDB;
import org.influxdb.InfluxDBFactory;
import org.influxdb.dto.BatchPoints;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;

import java.util.concurrent.TimeUnit;

/**
 * @author Created by pangkunkun on 2018/4/18.
 */
@SpringBootApplication
public class InfluxApplication {


    @Value("${influxdb.host1}")
    private String host1;

    @Value("${influxdb.host2}")
    private String host2;

    @Value("${influxdb.database1}")
    private String database1;

    @Value("${influxdb.database2}")
    private String database2;

    public static void main(String[] args) {
        SpringApplication.run(InfluxApplication.class,args);
    }

    @Bean(name = "1")
    public InfluxDB influxDB1(){
        InfluxDB influxDB = InfluxDBFactory.connect(host1);
        influxDB.setDatabase(database1)
                .enableBatch(20,200, TimeUnit.MILLISECONDS);

        return influxDB;
    }

    @Bean(name = "2")
    public InfluxDB influxDB2(){
        InfluxDB influxDB = InfluxDBFactory.connect(host2);
        influxDB.setDatabase(database2)
                .enableBatch(20,200, TimeUnit.MILLISECONDS);

        return influxDB;
    }

}

具体使用:

package com.test.influx;

import org.influxdb.InfluxDB;
import org.influxdb.dto.BatchPoints;
import org.influxdb.dto.Point;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.util.concurrent.TimeUnit;

/**
 * @author Created by pangkunkun on 2018/4/18.
 */
@Component
public class InfluxBatch implements CommandLineRunner{


    @Resource(name = "1")
    private InfluxDB influxDB1;

    @Resource(name = "2")
    private InfluxDB influxDB2;

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

        Point point = Point.measurement("test")
                .time(System.currentTimeMillis(), TimeUnit.MILLISECONDS)
                .addField("value",1)
                .tag("name","test1")
                .build();
        influxDB1.write(point);

        Point point2 = Point.measurement("test")
                .time(System.currentTimeMillis(), TimeUnit.MILLISECONDS)
                .addField("value",2)
                .tag("name","test2")
                .build();
        influxDB2.write(point2);
    }

}

在InfluxDB的bean设置的时候可以设置保留策略等信息,这个自己动手查看下就知道了。

猜你喜欢

转载自blog.csdn.net/qq_35981283/article/details/79994540