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 在自动配置发生之前没有正确初始化。