1

я решил вернуться к своей идее интеграции Кафки Метрики с весной загрузки приводом, который я уже упоминал здесь:Кафка MetricsReporter при поддержке Спринг загрузки привод

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

В настоящее время у меня есть отдельный проект «песочница» с рабочим кодом, который я хочу объединить в Spring Boot. И теперь я немного смущен. Часть моих тестов требует powermock к классу «супер обеспеченных» Мок Кафки:

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. 

} 

Но powermock не используется в Spring ботинке.

Что мне делать?

  1. Добавить новую стабильную силовую установку - как пружинные, так и пружинные пружины.
  2. Добавить новую стабильную силовую установку только для пружинного ботинка - пусть это будет скрытый секретный помощник.
  3. Исключить испытания, требующие электроснабжения.
  4. Забудьте о показателях Kafka, они огромны и страшны, и никто не хочет их в нашем приятном и дружественном приводе Spring Boot.

PS: Кроме того, я пытался сделать мир лучше и исправить это в самом Кафке, но, к сожалению Сопровождающие держать меня игнорируешь:

+1

Как использовать 'Metrics.addMetric()' для создания экземпляра 'KafkaMetric' и реагировать на него через ваш' KafkaStatisticsProvider.metricChange() ', который вы зарегистрируете в экземпляре' Metrics' перед тестированием? Вместо Powermock, конечно. Не знаком с Kafka Metrics, но я разветвил ваш проект. Выглядит просто, но нужно время, чтобы понять, что происходит. Вернусь к вам с понедельника, если не найдешь время в выходные. –

+0

Это отвечает на вопрос, случай закрыт, спасибо. Ждем ответа от вас – stepio

ответ

1

Имея ваше подтверждение в комментариях, я просто копирую здесь свой комментарий в качестве действительного ответа, чтобы правильно закрыть вопрос.

Вы можете попробовать использовать Metrics.addMetric() для создания KafkaMetric экземпляра и не реагировать на него через ваш KafkaStatisticsProvider.metricChange(), который вы будете регистрировать в экземпляре Metrics перед тестированием. Вместо Powermock, конечно.

На следующей неделе я попытаюсь найти время, чтобы внести свой вклад в проект вашего привода, чтобы избежать Powermock.

+0

Я сделал это здесь: https://github.com/stepio/spring-boot/commit/83f853f780b58c805c8c1cdc8ed1a394a5c04f9a – stepio

+0

Это круто! Я должен быть каким-то образом упомянут в Boot issue –

+0

Вы хотите сказать, что я должен создать некоторую проблему для поддержки показателей в проекте Spring Boot? На данный момент я не думаю, что код готов к PR. Я хотел бы придумать что-то, чтобы связать этого репортера с вашей автоматической конфигурацией Spring Kafka, чтобы автоматически записать показатели и внести изменения в комплект. – stepio

Смежные вопросы