/spring-data-influxdb

Spring Data InfluxDB

Primary LanguageJavaApache License 2.0Apache-2.0

Build Status Codacy Badge Maven Central

Spring Data InfluxDB

The primary goal of the Spring Data project is to make it easier to build Spring-powered applications that use new data access technologies such as non-relational databases, map-reduce frameworks, and cloud based data services.

This modules provides integration with the InfluxDB database and wraps the capabilities of the official influxdb-java library.

Artifacts

Maven

<dependency>
  <groupId>com.github.miwurster</groupId>
  <artifactId>spring-data-influxdb</artifactId>
  <version>1.8</version>
</dependency>

Usage (Spring Boot)

  • Following properties can be used in your application.yml:

    spring:
      influxdb:
        url: http://localhost:8086
        username: user
        password: ~
        database: test
        retention-policy: autogen

    Optionally, you can also configure connections, read, and write timeouts (in seconds):

    spring:
      influxdb:    	
        connect-timeout: 10
        read-timeout: 30
        write-timeout: 10

    Furthermore, one can enable gzip compression in order to reduce size of the transferred data:

    spring:
      influxdb:    	
        gzip: true
  • Create InfluxDBConnectionFactory and InfluxDBTemplate beans:

    @Configuration
    @EnableConfigurationProperties(InfluxDBProperties.class)
    public class InfluxDBConfiguration
    {
      @Bean
      public InfluxDBConnectionFactory connectionFactory(final InfluxDBProperties properties)
      {
        return new InfluxDBConnectionFactory(properties);
      }
    
      @Bean
      public InfluxDBTemplate<Point> influxDBTemplate(final InfluxDBConnectionFactory connectionFactory)
      {
        /*
         * You can use your own 'PointCollectionConverter' implementation, e.g. in case
         * you want to use your own custom measurement object.
         */
        return new InfluxDBTemplate<>(connectionFactory, new PointConverter());
      }
      
      @Bean
      public DefaultInfluxDBTemplate defaultTemplate(final InfluxDBConnectionFactory connectionFactory)
      {
        /*
         * If you are just dealing with Point objects from 'influxdb-java' you could
         * also use an instance of class DefaultInfluxDBTemplate.
         */
        return new DefaultInfluxDBTemplate(connectionFactory);
      }
    }
  • Use InfluxDBTemplate to interact with the InfluxDB database:

    @Autowired
    private InfluxDBTemplate<Point> influxDBTemplate;
    
    influxDBTemplate.createDatabase();
    final Point p = Point.measurement("disk")
      .time(System.currentTimeMillis(), TimeUnit.MILLISECONDS)
      .tag("tenant", "default")
      .addField("used", 80L)
      .addField("free", 1L)
      .build();
    influxDBTemplate.write(p);

Building

Spring Data InfluxDB uses Maven as its build system.

mvn clean install