Skip to content

A question for ReferenceConfigCache. #1293

Closed
@timestatic

Description

@timestatic

官网的例子通过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

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions