我在为 Spring 项目设置运行状况指示器时遇到问题。由于版本 1.4.0 Spring 附带了自己的 CouchbaseHealthIndicator (请参阅 http://docs.spring.io/spring-boot/docs/1.4.1.RELEASE/api/org/springframework/boot/actuate/health/CouchbaseHealthIndicator.html ),但我无法使其工作。其他健康指标运行良好(本项目中的磁盘空间,其他项目中的邮件和数据库)。
@ConditionalOnClass({ CouchbaseOperations.class, Bucket.class })
@ConditionalOnBean(CouchbaseOperations.class)
@ConditionalOnEnabledHealthIndicator("couchbase")
这是健康指示器初始化的条件。提到的类位于类路径中。 项目启动后,我让它打印其应用程序上下文中的 bean - 有一个 bean 'CouchbaseTemplate',它实现了所需的 CouchbaseOperations。
我还像这样手动启用了 couchbase 健康检查
management.health.couchbase.enabled = true
尽管如此,它仍然会检查磁盘空间,而不检查沙发底座。
您可以在 GitHub 上找到我的项目:https://github.com/Age15990/CouchbaseHI 请随时下载并尝试。如果您以前遇到过这个问题或者您知道如何解决它,我很乐意阅读您的答案。
提前致谢!
最佳答案
spring-boot-starter-actuator
似乎存在缺陷。我为此提交了一张票here .
解决方法可能是您自己提供配置:
@Configuration
@ConditionalOnClass({ CouchbaseOperations.class, Bucket.class })
//@ConditionalOnBean(CouchbaseOperations.class)
@ConditionalOnEnabledHealthIndicator("couchbase")
public class CouchbaseHealthConfig extends CompositeHealthIndicatorConfiguration<CouchbaseHealthIndicator, CouchbaseOperations>
{
private final Map<String, CouchbaseOperations> couchbaseOperations;
public CouchbaseHealthConfig(Map<String, CouchbaseOperations> couchbaseOperations)
{
this.couchbaseOperations = couchbaseOperations;
}
@Bean
@ConditionalOnMissingBean(name = "couchbaseHealthIndicator")
public HealthIndicator couchbaseHealthIndicator()
{
return createHealthIndicator(this.couchbaseOperations);
}
}
说明:
沙发底座运行状况指示器的自动配置似乎已损坏。当我从 HealthIndicatorAutoConfiguration.class
中的原始配置中注释掉 @ConditionalOnBean(CouchbaseOperations.class)
时,它对我有用。
这意味着 CouchbaseOperations.class
在自动配置发生之前未正确初始化。
关于java - Spring Couchbase 健康指示器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40905089/