Dock-MultiCtrl/admin/src/main/java/com/multictrl/common/config/InfluxConfig.java

70 lines
2.3 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.multictrl.common.config;
import com.influxdb.LogLevel;
import com.influxdb.client.InfluxDBClient;
import com.influxdb.client.InfluxDBClientFactory;
import com.influxdb.client.InfluxDBClientOptions;
import lombok.Data;
import okhttp3.ConnectionPool;
import okhttp3.ConnectionSpec;
import okhttp3.OkHttpClient;
import okhttp3.logging.HttpLoggingInterceptor;
import org.slf4j.LoggerFactory;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.time.Duration;
import java.util.Collections;
import java.util.concurrent.TimeUnit;
/**
* influxdb配置
*
* @author Sdy
* @since 1.0.0 2026/5/3
*/
@Data
@Configuration
@ConfigurationProperties(prefix = "influx")
public class InfluxConfig {
private Boolean saveOpen;
private String url;
private String token;
private String org;
private String bucket;
@Bean
public InfluxDBClient influxDBClient() {
// 1. 构建高性能 OkHttpClient连接池+重试)
OkHttpClient.Builder okHttpClient = new OkHttpClient.Builder()
.connectionSpecs(Collections.singletonList(ConnectionSpec.CLEARTEXT))
.connectTimeout(Duration.ofSeconds(15))
.readTimeout(Duration.ofSeconds(300))
.writeTimeout(Duration.ofSeconds(120))
.connectionPool(new ConnectionPool(
20,
300,
TimeUnit.SECONDS
))
.retryOnConnectionFailure(true)
.addInterceptor(new HttpLoggingInterceptor(message ->
LoggerFactory.getLogger("InfluxDB").debug("HTTP: {}", message)
).setLevel(HttpLoggingInterceptor.Level.NONE));
// 2. 通过 Options 精确配置
InfluxDBClientOptions options = InfluxDBClientOptions.builder()
.url(url)
.authenticateToken(token.toCharArray())
.org(org)
.bucket(bucket)
.okHttpClient(okHttpClient)
.build();
InfluxDBClient client = InfluxDBClientFactory.create(options);
client.setLogLevel(LogLevel.NONE);
return client;
}
}