由Spring Boot Actuator支持的Kafka MetricsReporter

时间:2016-12-02 22:26:35

标签: spring-boot apache-kafka spring-boot-actuator spring-kafka

我决定回到我的想法,将Kafka Metrics与Spring Boot Actuator集成,我在这里提到过:

https://github.com/spring-projects/spring-boot/issues/6227

到目前为止,我有一个单独的"沙盒"带有工作代码的项目,我想将它合并到Spring Boot中。现在我有点困惑。我的部分测试需要对Mock Kafka"超级安全"类:

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。

我该怎么办?

  1. 添加最新稳定的powermock - 包括spring-boot-dependencies和spring-boot-actuator。
  2. 只为弹簧启动执行器添加最新稳定的电源摇摆 - 让它成为隐藏的秘密助手。
  3. 排除需要powermock的测试。
  4. 忘记Kafka Metrics,他们是巨大而可怕的,没有人想要他们在我们漂亮友好的Spring Boot Actuator中。

1 个答案:

答案 0 :(得分:1)

在评论中得到您的确认后,我只是将我的评论复制为正确回答问题的有效答案。

您可以尝试使用Metrics.addMetric()创建KafkaMetric实例,然后通过KafkaStatisticsProvider.metricChange()对其做出反应,您将在测试前在Metrics实例中注册。当然,而不是Powermock。

我将在下周找时间为你的执行器项目做出贡献,以避免使用Powermock。