feat: configure tdengine history datasource

This commit is contained in:
lingniu
2026-06-29 14:21:56 +08:00
parent 192f115176
commit 57ba7dca90
10 changed files with 184 additions and 1 deletions

View File

@@ -6,6 +6,8 @@ import com.lingniu.ingest.tdenginehistory.TdengineHistoryReader;
import com.lingniu.ingest.tdenginehistory.TdengineHistoryWriter;
import com.lingniu.ingest.tdenginehistory.TdengineJdbcHistoryReader;
import com.lingniu.ingest.tdenginehistory.TdengineJdbcHistoryWriter;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
@@ -39,6 +41,26 @@ public class TdengineHistoryAutoConfiguration {
return new TdengineHistoryStatements(schema);
}
@Bean
@ConditionalOnMissingBean(DataSource.class)
@ConditionalOnProperty(
prefix = "lingniu.ingest.tdengine-history",
name = "enabled",
havingValue = "true")
public DataSource tdengineDataSource(TdengineHistoryProperties properties) {
HikariConfig config = new HikariConfig();
config.setPoolName("tdengine-history");
config.setDriverClassName(properties.getDriverClassName());
config.setJdbcUrl(properties.getJdbcUrl());
config.setUsername(properties.getUsername());
config.setPassword(properties.getPassword());
config.setMaximumPoolSize(Math.max(1, properties.getMaximumPoolSize()));
config.setMinimumIdle(Math.max(0, Math.min(properties.getMinimumIdle(), properties.getMaximumPoolSize())));
config.setConnectionTimeout(Math.max(250, properties.getConnectionTimeoutMillis()));
config.setInitializationFailTimeout(properties.getInitializationFailTimeoutMillis());
return new HikariDataSource(config);
}
@Bean
@ConditionalOnMissingBean
@ConditionalOnBean(DataSource.class)

View File

@@ -15,6 +15,25 @@ public class TdengineHistoryProperties {
*/
private String database = "vehicle_history";
/**
* TDengine RESTful JDBC 地址。默认走 6041部署时可用 TDENGINE_JDBC_URL 覆盖。
*/
private String jdbcUrl;
private String username = "root";
private String password = "taosdata";
private String driverClassName = "com.taosdata.jdbc.rs.RestfulDriver";
private int maximumPoolSize = 16;
private int minimumIdle = 0;
private long connectionTimeoutMillis = 5000;
private long initializationFailTimeoutMillis = -1;
public boolean isEnabled() {
return enabled;
}
@@ -30,4 +49,71 @@ public class TdengineHistoryProperties {
public void setDatabase(String database) {
this.database = database;
}
public String getJdbcUrl() {
if (jdbcUrl == null || jdbcUrl.isBlank()) {
return "jdbc:TAOS-RS://127.0.0.1:6041/" + database;
}
return jdbcUrl;
}
public void setJdbcUrl(String jdbcUrl) {
this.jdbcUrl = jdbcUrl;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getDriverClassName() {
return driverClassName;
}
public void setDriverClassName(String driverClassName) {
this.driverClassName = driverClassName;
}
public int getMaximumPoolSize() {
return maximumPoolSize;
}
public void setMaximumPoolSize(int maximumPoolSize) {
this.maximumPoolSize = maximumPoolSize;
}
public int getMinimumIdle() {
return minimumIdle;
}
public void setMinimumIdle(int minimumIdle) {
this.minimumIdle = minimumIdle;
}
public long getConnectionTimeoutMillis() {
return connectionTimeoutMillis;
}
public void setConnectionTimeoutMillis(long connectionTimeoutMillis) {
this.connectionTimeoutMillis = connectionTimeoutMillis;
}
public long getInitializationFailTimeoutMillis() {
return initializationFailTimeoutMillis;
}
public void setInitializationFailTimeoutMillis(long initializationFailTimeoutMillis) {
this.initializationFailTimeoutMillis = initializationFailTimeoutMillis;
}
}