Closed
Description
官网的例子通过ReferenceConfigCache缓存ReferenceConfig实例,
ReferenceConfigCache cache = ReferenceConfigCache.getCache();
// cache.get方法中会缓存 Reference对象,并且调用ReferenceConfig.get方法启动ReferenceConfig
XxxService xxxService = cache.get(reference);
源码中cache.get()的实现是先get, 如果== null 再put ReferenceConfig实例, 而没有提供可以由用户判断cache是否已存在的api, 我在通过groovy脚本泛化调用的时候, 需要设定当前应用与注册中心, 然后获取ReferenceConfig实例, 如下:
...
// 连接注册中心配置
RegistryConfig registry = new RegistryConfig();
// 注册中心协议与地址
registry.setAddress("zookeeper://127.0.0.1:2181");
// 当前消费者应用配置
ApplicationConfig application = new ApplicationConfig();
application.setName("consumer-name");
application.setRegistry(registry);
reference.setApplication(application);
ReferenceConfigCache referenceConfigCache = ReferenceConfigCache.getCache();
GenericService genericService = referenceConfigCache.get(reference);
// 泛化调用
genericService.$invoke(XXXX);
每一次都会把这个脚本跑一遍, 也就是每一次都会去new RegistryConfig, 和ApplicationConfig这两个实例, 虽然除了第一次以外, ReferenceConfig都是是从原有的cache中获得; 但是并没有符合这个cache工具类的原有目的. 所以ReferenceConfigCache的get()方法能否提供单独的get()方法;
还是我的使用方式不对?
非常感谢~
Metadata
Metadata
Assignees
Labels
No labels