Spring Boot Actuator 支持的 Kafka MetricsReporter
Kafka MetricsReporter backed by Spring Boot Actuator
我决定回到我的想法,将 Kafka Metrics 与 Spring Boot Actuator 集成,我在这里提到过:
https://github.com/spring-projects/spring-boot/issues/6227
截至目前,我有一个带有工作代码的单独 "sandbox" 项目,我想将其合并到 Spring Boot.现在我有点困惑。我的部分测试需要 powermock 来模拟 Kafka 的 "super-secured" class:
package org.apache.kafka.common.metrics;
// some imports...
public final class KafkaMetric implements Metric {
private MetricName metricName;
private final Object lock;
private final Time time;
private final Measurable measurable;
private MetricConfig config;
KafkaMetric(Object lock, MetricName metricName, Measurable measurable, MetricConfig config, Time time) {
this.metricName = metricName;
this.lock = lock;
this.measurable = measurable;
this.config = config;
this.time = time;
}
// some good code here, but no public constructor and the class is final... of course.
}
但是 Spring Boot 中没有使用 powermock。
我该怎么办?
- 添加最新的稳定 powermock - 在 spring-boot-dependencies 和 spring-boot-actuator 中。
- 仅将最新稳定的 powermock 添加到 spring-boot-actuator - 让它成为一个隐藏的秘密助手。
- 排除需要 powermock 的测试。
- 忘掉 Kafka 指标吧,它们又大又可怕,在我们友好的 Spring Boot Actuator 中没有人想要它们。
在评论中得到您的确认,我只是将我的评论复制到这里作为正确结束问题的有效答案。
您可以尝试使用 Metrics.addMetric()
创建 KafkaMetric
实例,然后通过您的 KafkaStatisticsProvider.metricChange()
对其做出反应,您将在测试前在 Metrics
实例中注册.当然,而不是 Powermock。
我将在下周抽空为您的执行器项目做出贡献,以避免 Powermock。
我决定回到我的想法,将 Kafka Metrics 与 Spring Boot Actuator 集成,我在这里提到过:
https://github.com/spring-projects/spring-boot/issues/6227
截至目前,我有一个带有工作代码的单独 "sandbox" 项目,我想将其合并到 Spring Boot.现在我有点困惑。我的部分测试需要 powermock 来模拟 Kafka 的 "super-secured" class:
package org.apache.kafka.common.metrics;
// some imports...
public final class KafkaMetric implements Metric {
private MetricName metricName;
private final Object lock;
private final Time time;
private final Measurable measurable;
private MetricConfig config;
KafkaMetric(Object lock, MetricName metricName, Measurable measurable, MetricConfig config, Time time) {
this.metricName = metricName;
this.lock = lock;
this.measurable = measurable;
this.config = config;
this.time = time;
}
// some good code here, but no public constructor and the class is final... of course.
}
但是 Spring Boot 中没有使用 powermock。
我该怎么办?
- 添加最新的稳定 powermock - 在 spring-boot-dependencies 和 spring-boot-actuator 中。
- 仅将最新稳定的 powermock 添加到 spring-boot-actuator - 让它成为一个隐藏的秘密助手。
- 排除需要 powermock 的测试。
- 忘掉 Kafka 指标吧,它们又大又可怕,在我们友好的 Spring Boot Actuator 中没有人想要它们。
在评论中得到您的确认,我只是将我的评论复制到这里作为正确结束问题的有效答案。
您可以尝试使用 Metrics.addMetric()
创建 KafkaMetric
实例,然后通过您的 KafkaStatisticsProvider.metricChange()
对其做出反应,您将在测试前在 Metrics
实例中注册.当然,而不是 Powermock。
我将在下周抽空为您的执行器项目做出贡献,以避免 Powermock。