Spring Couchbase 健康指标
Spring Couchbase Health Indicator
我在为我的 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),但我无法使其工作。其他健康指标工作正常(此项目中的磁盘 space,其他项目中的邮件和数据库)。
@ConditionalOnClass({ CouchbaseOperations.class, Bucket.class })
@ConditionalOnBean(CouchbaseOperations.class)
@ConditionalOnEnabledHealthIndicator("couchbase")
这是初始化健康指标的条件。提到的 类 在类路径中。
项目启动后,我让它打印它在其应用程序上下文中的 beans - 有一个 bean 'CouchbaseTemplate',它实现了所需的 CouchbaseOperations。
我也像这样手动启用了 couchbase 健康检查
management.health.couchbase.enabled = true
仍然,它一直在检查光盘 space,不检查沙发底座。
您可以在 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);
}
}
解释:
couchbase 健康指示器的自动配置似乎已损坏。当我从 HealthIndicatorAutoConfiguration.class
中的原始配置中注释掉 @ConditionalOnBean(CouchbaseOperations.class)
时,它对我有用。
这意味着 CouchbaseOperations.class
在自动配置发生之前没有正确初始化。
我在为我的 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),但我无法使其工作。其他健康指标工作正常(此项目中的磁盘 space,其他项目中的邮件和数据库)。
@ConditionalOnClass({ CouchbaseOperations.class, Bucket.class })
@ConditionalOnBean(CouchbaseOperations.class)
@ConditionalOnEnabledHealthIndicator("couchbase")
这是初始化健康指标的条件。提到的 类 在类路径中。 项目启动后,我让它打印它在其应用程序上下文中的 beans - 有一个 bean 'CouchbaseTemplate',它实现了所需的 CouchbaseOperations。
我也像这样手动启用了 couchbase 健康检查
management.health.couchbase.enabled = true
仍然,它一直在检查光盘 space,不检查沙发底座。
您可以在 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);
}
}
解释:
couchbase 健康指示器的自动配置似乎已损坏。当我从 HealthIndicatorAutoConfiguration.class
中的原始配置中注释掉 @ConditionalOnBean(CouchbaseOperations.class)
时,它对我有用。
这意味着 CouchbaseOperations.class
在自动配置发生之前没有正确初始化。