我有一个类,它基于动态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。
暂无答案!
目前还没有任何答案,快来回答吧!