如何在运行时重新初始化单例(kafkaproducer)?

jaxagkaj  于 2021-06-06  发布在  Kafka
关注(0)|答案(0)|浏览(323)

我有一个类,它基于动态cahce的配置创建kafka生产者。配置基本上是固定的,但是现在我们正在探索如果在运行时更改了配置,那么重新初始化kafka生产者的可能性。cahce基本上是一个hashmap,它从db定期刷新。
我现在所做的是在发送消息之前检查缓存,如果值被更改,则调用具有双重检查锁的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;

到目前为止,我还不确定是否需要一个抽象工厂:

应用程序使用spring。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题