如何在运行时重新初始化Singleton(KafkaProducer)?

时间:2019-06-17 17:31:59

标签: java oop design-patterns apache-kafka singleton

我有一个基于动态cahce的配置创建Kafka生产者的类。配置几乎是固定的,但是现在我们正在研究如果运行时更改了配置的重新初始化 Kafka生产者的可能性。 缓存基本上是一个HashMap,可从数据库中定期刷新。

我现在要做的是在发送消息之前检查Cache,如果值更改了,请调用具有双重检查锁定的init()方法。

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

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

我已经在开发环境中对其进行了测试,它似乎可以正常工作,并且单元测试是一件痛苦的事情(很多模拟)。我目前也在修改它,以便将init()部分移至Factory。

我想检查实施是否可以做得更好? 我也在这一行看到一个声纳警告:

private volatile String config;

到目前为止,这是我要记住的,仍然不确定是否需要AbstractFactory: Kafka factory 该应用程序使用Spring。

0 个答案:

没有答案
相关问题