У меня есть класс, который создает производителей 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: Приложениеиспользует Spring.