修改数据源健康监测

This commit is contained in:
ajaxfan
2021-05-28 16:32:21 +08:00
parent 0c3f4cc163
commit 696e91b4ce

View File

@ -5,19 +5,20 @@ import java.util.Map;
import javax.sql.DataSource; import javax.sql.DataSource;
import org.springframework.beans.factory.ObjectProvider; import org.springframework.beans.factory.ObjectProvider;
import org.springframework.boot.actuate.autoconfigure.health.ConditionalOnEnabledHealthIndicator;
import org.springframework.boot.actuate.autoconfigure.jdbc.DataSourceHealthContributorAutoConfiguration; import org.springframework.boot.actuate.autoconfigure.jdbc.DataSourceHealthContributorAutoConfiguration;
import org.springframework.boot.actuate.health.AbstractHealthIndicator; import org.springframework.boot.actuate.health.AbstractHealthIndicator;
import org.springframework.boot.actuate.jdbc.DataSourceHealthIndicator; import org.springframework.boot.actuate.jdbc.DataSourceHealthIndicator;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.jdbc.metadata.DataSourcePoolMetadataProvider; import org.springframework.boot.jdbc.metadata.DataSourcePoolMetadataProvider;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
/** /**
* 解决 shardingjdbc 在 spring 2.3.1 及以上版本中健康监测异常问题 #6002 * 解决 shardingjdbc 在 spring 2.3.1 及以上版本中健康监测异常问题 #6002
* *
* @author Ajaxfan * @author Ajaxfan
*/ */
@ConditionalOnEnabledHealthIndicator("db") @ConditionalOnProperty(name = "management.health.db.enabled", havingValue = "true", matchIfMissing = true)
@Configuration @Configuration
public class EBTPDataSourceHealthContributorAutoConfiguration extends DataSourceHealthContributorAutoConfiguration { public class EBTPDataSourceHealthContributorAutoConfiguration extends DataSourceHealthContributorAutoConfiguration {
@ -32,6 +33,9 @@ public class EBTPDataSourceHealthContributorAutoConfiguration extends DataSource
*/ */
@Override @Override
protected AbstractHealthIndicator createIndicator(DataSource source) { protected AbstractHealthIndicator createIndicator(DataSource source) {
if (source instanceof AbstractRoutingDataSource) {
return super.createIndicator(source);
}
return new DataSourceHealthIndicator(source, "select 1"); return new DataSourceHealthIndicator(source, "select 1");
} }