Spring boot 如何实现自定义CompositeHealthContributor
我想显示以下运行状况信息:Spring boot 如何实现自定义CompositeHealthContributor,spring-boot,spring-boot-actuator,Spring Boot,Spring Boot Actuator,我想显示以下运行状况信息: { "status":"UP", "components": { "myHealthComposite": { "status":"UP", "components": { "myFirstHealthIndicator": { "status":"UP" }, "mySeco
{
"status":"UP",
"components": {
"myHealthComposite": {
"status":"UP",
"components": {
"myFirstHealthIndicator": { "status":"UP" },
"mySecondHealthIndicator": { "status":"UP" }
}
}
},
"groups":[]
}
根据最新的Spring Boot Actuator文档,我应该使用“HealthIndicator”接口实现“MyFirstHealthIndicator”和“mySecondHealthIndicator”,并将它们与“CompositeHealthContributor”接口组合。但是对于“CompositeHealthContributor”,我需要一个借口,在文档中我找不到对我有用的东西
有人能帮我吗
问候
编辑:
myFirstHealthIndicator
@Component
public class MyFirstHealthIndicator implements HealthIndicator {
@Override
public Health health() {
return Health.up().build();
}
}
@Component
public class MySecondHealthIndicator implements HealthIndicator {
@Override
public Health health() {
return Health.up().build();
}
}
mySecondHealthIndicator
@Component
public class MyFirstHealthIndicator implements HealthIndicator {
@Override
public Health health() {
return Health.up().build();
}
}
@Component
public class MySecondHealthIndicator implements HealthIndicator {
@Override
public Health health() {
return Health.up().build();
}
}
myHealthComposite
@Component
public class MyHealthComposite implements CompositeHealthContributor {
@Override
public HealthContributor getContributor(String name) {
return null;
}
@Override
public Iterator<NamedContributor<HealthContributor>> iterator() {
return null;
}
}
@组件
公共类MyHealthComposite实现了CompositeHealthContributor{
@凌驾
public Health Contributor getContributor(字符串名称){
返回null;
}
@凌驾
公共迭代器迭代器(){
返回null;
}
}
一个非常简单且硬编码的解决方案,输出预期的结果
请从MyFirstHealthIndicator和MySecondHealthIndicator中删除@组件
注释。否则,它们也将作为单独的组件列出
MyFirstHealthIndicator
@Component
public class MyFirstHealthIndicator implements HealthIndicator {
@Override
public Health health() {
return Health.up().build();
}
}
@Component
public class MySecondHealthIndicator implements HealthIndicator {
@Override
public Health health() {
return Health.up().build();
}
}
公共类MyFirstHealthIndicator实现HealthIndicator{
@凌驾
公共卫生(){
返回Health.up().build();
}
}
MySecondHealthIndicator
@Component
public class MyFirstHealthIndicator implements HealthIndicator {
@Override
public Health health() {
return Health.up().build();
}
}
@Component
public class MySecondHealthIndicator implements HealthIndicator {
@Override
public Health health() {
return Health.up().build();
}
}
公共类MySecondHealthIndicator实现HealthIndicator{
@凌驾
公共卫生(){
返回Health.up().build();
}
}
MyHealthComposite
@Component
public class MyHealthComposite implements CompositeHealthContributor {
@Override
public HealthContributor getContributor(String name) {
return null;
}
@Override
public Iterator<NamedContributor<HealthContributor>> iterator() {
return null;
}
}
@组件
公共类MyHealthComposite实现了CompositeHealthContributor{
私有映射参与者=新建LinkedHashMap();
MyHealthComposite(){
this.contributors.put(“myFirstHealthIndicator”,新的myFirstHealthIndicator());
this.contributors.put(“mySecondHealthIndicator”,new mySecondHealthIndicator());
}
@凌驾
public Health Contributor getContributor(字符串名称){
返回贡献者。get(名称);
}
@凌驾
公共迭代器迭代器(){
返回contributors.entrySet().stream()
.map((entry)->NamedContributor.of(entry.getKey(),entry.getValue()).iterator();
}
}
请在应用程序.properties
中启用管理.endpoint.health.show components=always
输出如下所示:
{
“状态”:“向上”,
“组成部分”:{
“磁盘空间”:{
“状态”:“向上”
},
“myHealthComposite”:{
“状态”:“向上”,
“组成部分”:{
“myFirstHealthIndicator”:{
“状态”:“向上”
},
“mySecondHealthIndicator”:{
“状态”:“向上”
}
}
},
“平”:{
“状态”:“向上”
}
}
}
然而,这不是我的解决方案,而是根据需求采用和调整的。@QtRoS我不能发布一个很好的示例,因为我需要一个如何实现CompositeContributor的建议,但我希望您能处理我编辑的问题。“从最新的Spring Boot Actuator文档”您能告诉我们源代码吗(以便我们处于同一级别)?如果我需要将某些内容自动连接到
MyFirstHealthIndicator
或MySecondHealthIndicator
中,并且我不想显示重复的组件,该怎么办。