【发布时间】:2022-07-08 22:25:00
【问题描述】:
我正在尝试为 SpringBoot 应用程序构建自定义 KinesisBinderHealthIndicator。
当出现在 AWS 中的 Kinesis 流的实际列表与作为 spring.cloud.stream.bindings 目标的 application.properties 文件中声明的流不匹配时,我的自定义实现应该在 /actuator/health 端点下显示健康 DOWN 状态(例如:当流具有已删除或未自动创建到 Kinesis 中)
application.properties:
spring.cloud.stream.bindings.my-first-stream-in-0.destination=my-first-stream
spring.cloud.stream.bindings.my-second-stream-in-0.destination=my-second-stream
aws kinesis 列表流:
aws --endpoint-url=http://localhost:4566 kinesis list-streams
{
"StreamNames": [
"my-first-stream",
]
}
我知道如何覆盖默认的 KinesisBinderHealthIndicator 实现以及如何获取可用 Kinesis 流的实际列表:
@Primary
@Component("kinesisBinderHealthIndicator")
@ComponentScan(basePackages = "org.springframework.cloud.stream.binder.kinesis")
@RequiredArgsConstructor
public class CustomKinesisBinderHealthIndicator implements HealthIndicator {
private final KinesisMessageChannelBinder kinesisMessageChannelBinder;
private final KinesisExtendedBindingProperties kinesisExtendedBindingProperties;
@Override
public Health health() {
try {
List<String> actualKinesisStreams = new ArrayList<>(this.kinesisMessageChannelBinder.getStreamsInUse());
//code to retrieve list of kinesis streams from destination bindings
} catch (Exception e) {
return Health.down(e)).build();
}
}
}
您能否告诉我有关从 Spring Cloud 流绑定目标检索流列表的任何提示?
非常感谢!
【问题讨论】:
标签: java spring spring-boot amazon-kinesis spring-boot-actuator