70 lines
2.3 KiB
Java
70 lines
2.3 KiB
Java
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;
|
||
}
|
||
}
|