Как повторно инициализировать синглтон (KafkaProducer) во время выполнения? - PullRequest
0 голосов
/ 17 июня 2019

У меня есть класс, который создает производителей Kafka на основе конфигов из динамического cahce.Конфиги были в значительной степени исправлены, но теперь мы изучаем возможность повторной инициализации производителя Kafka, если конфигурация была изменена во время выполнения.Cahce - это, по сути, HashMap, который периодически обновляется из БД.

Что я сделал сейчас, так это проверил Cache перед тем, как отправить сообщение, и если значение изменилось, вызовите метод init (), которыйимеет двойную блокировку проверки.

private volatile String config;
init(){
...
}

sendMessage(String message, String topic){
  if(config != Cahce.config())
  synchronized(){
    if(config != Cahce.config())
    init();
  }
}

Я проверил это в среде Dev, похоже, это работает, и модульное тестирование было проблемой (много издевательств).Я также в настоящее время изменяю это так, чтобы часть init () была перемещена на Фабрику.Я хотел проверить, можно ли сделать реализацию лучше?Также я вижу предупреждение сонара в этой строке:

private volatile String config;

Это то, что я имею в виду до сих пор, все еще не уверен, нужен ли мне AbstractFactory: Kafka factory Приложениеиспользует Spring.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...