JCo*_*ker 5 spring-boot spring-boot-actuator
我想显示以下健康信息:
{
"status":"UP",
"components": {
"myHealthComposite": {
"status":"UP",
"components": {
"myFirstHealthIndicator": { "status":"UP" },
"mySecondHealthIndicator": { "status":"UP" }
}
}
},
"groups":[]
}
Run Code Online (Sandbox Code Playgroud)
从最新的 Spring Boot Actuator 文档中,我应该使用“HealthIndicator”-Interface 实现“myFirstHealthIndactor”和“mySecondHealthIndicator”,并将它们与“CompositeHealthContributor”-Interface 组合起来。但是对于“CompositeHealthContributor”,我需要一个示例,在文档中我找不到对我有用的东西。
有人可以帮我吗?
你好
编辑:
我的第一健康指标
@Component
public class MyFirstHealthIndicator implements HealthIndicator {
@Override
public Health health() {
return Health.up().build();
}
}
Run Code Online (Sandbox Code Playgroud)
我的第二健康指标
@Component
public class MySecondHealthIndicator implements HealthIndicator {
@Override
public Health health() {
return Health.up().build();
}
}
Run Code Online (Sandbox Code Playgroud)
我的健康综合
@Component
public class MyHealthComposite implements CompositeHealthContributor {
@Override
public HealthContributor getContributor(String name) {
return null;
}
@Override
public Iterator<NamedContributor<HealthContributor>> iterator() {
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
小智 4
一个非常简单且硬编码的解决方案,可以输出预期的结果。
@Component
请从MyFirstHealthIndicator和MySecondHealthIndicator中删除注释。否则,它们也被列为单独的组件。
我的第一个健康指标
public class MyFirstHealthIndicator implements HealthIndicator {
@Override
public Health health() {
return Health.up().build();
}
}
Run Code Online (Sandbox Code Playgroud)
我的第二健康指标
public class MySecondHealthIndicator implements HealthIndicator {
@Override
public Health health() {
return Health.up().build();
}
}
Run Code Online (Sandbox Code Playgroud)
我的健康综合
@Component
public class MyHealthComposite implements CompositeHealthContributor {
private Map<String, HealthContributor> contributors = new LinkedHashMap<>();
MyHealthComposite() {
this.contributors.put("myFirstHealthIndicator", new MyFirstHealthIndicator());
this.contributors.put("mySecondHealthIndicator", new MySecondHealthIndicator());
}
@Override
public HealthContributor getContributor(String name) {
return contributors.get(name);
}
@Override
public Iterator<NamedContributor<HealthContributor>> iterator() {
return contributors.entrySet().stream()
.map((entry) -> NamedContributor.of(entry.getKey(), entry.getValue())).iterator();
}
}
Run Code Online (Sandbox Code Playgroud)
请management.endpoint.health.show-components=always
在您的application.properties
.
输出看起来像:
{
"status": "UP",
"components": {
"diskSpace": {
"status": "UP"
},
"myHealthComposite": {
"status": "UP",
"components": {
"myFirstHealthIndicator": {
"status": "UP"
},
"mySecondHealthIndicator": {
"status": "UP"
}
}
},
"ping": {
"status": "UP"
}
}
}
Run Code Online (Sandbox Code Playgroud)
然而,这不是我的解决方案,而是从spring-cloud-stream 的 BindersHealthIndicatorAutoConfiguration中采用并适应了需求。
归档时间: |
|
查看次数: |
1985 次 |
最近记录: |