2017-10-14 83 views
1

我想知道是否存在某種方式來禁用SpringBoot Actuator對特定數據源的監視。不監視健康檢查的特定數據源

方案: 一個微服務使用3個數據源,但是對於一些商業原因,他們中的一個數據源,這是沒有必要的春天引導健康指示符進行監測。

如何禁用一個特定數據源的監視?

提前感謝

胡安·安東尼奧

回答

1

我認爲你必須禁用默認數據源的健康指標,你可以用這個屬性做:

management.health.db.enabled=false 

,然後配置您自己的健康指標,只能解決您感興趣的數據源,例如:

@Autowired 
private DataSource dataSourceA; 

@Autowired 
private DataSource dataSourceB; 

@Bean 
public DataSourceHealthIndicator dataSourceHealthIndicatorA() { 
    return new DataSourceHealthIndicator(dataSourceA); 
} 

@Bean 
public DataSourceHealthIndicator dataSourceHealthIndicatorB() { 
    return new DataSourceHealthIndicator(dataSourceB); 
} 

或者,您也可以通過擴展AbstractHealthIndicator來寫入您自己的'多個數據源健康狀況指示器',並只注入您有興趣監控的Datasources。任何型號爲HealthIndicator的彈簧豆將自動註冊到health執行機構,因此您只需讓Spring創建您自定義的HealthIndicator,它將被執行機構暴露。

對於後臺,您可以看到Spring如何配置默認數據源運行狀況檢查:org.springframework.boot.actuate.autoconfigure.DataSourcesHealthIndicatorConfiguration

+0

嗨@ glitch,非常感謝您的評論。你知道Spring Boot中的哪個類添加了關於Datasources的所有bean嗎? – jabrena

+0

@jabrena re:「Spring Boot中的什麼類添加所有關於Datasources的bean」...我認爲這個類是一個很好的開始'org.springframework.boot.actuate.autoconfigure.DataSourcesHealthIndicatorConfiguration'的地方,因爲它是用一個'org.springframework.boot.actuate.autoconfigure.DataSourcesHealthIndicatorConfiguration'必須包含在Spring應用程序上下文中發現的所有'DataSource'實例。 – glytching