dubbo编程式动态调用

原创
2021/01/14 21:23
阅读数 1.2K

前言:为了实现dubbo编程式调用

定一个接口 

public interface ToDoService {

    String test(String s);
}

 

两个实现

@Service(group = "test1")
public class ToDoService1 implements ToDoService {
    @Override
    public String test(String s) {
        return "1" + s;
    }
}
@Service(group = "test2")
public class ToDoService2 implements ToDoService {
    @Override
    public String test(String s) {
        return "2" + s;
    }
}

这里通过 group来区分两个实现类

 

调用方:

/**
 * 执行ToDoService
 *
 * @param group
 * @return
 */
public String executeToDoService(String group) {
    ReferenceConfig<ToDoService> referenceConfig = new ReferenceConfig<>();
    referenceConfig.setInterface(ToDoService.class);
    referenceConfig.setGroup(group);
    ReferenceConfigCache cache = ReferenceConfigCache.getCache();
    ToDoService toDoService1 = cache.get(referenceConfig);
    try {
        return toDoService1.test("哈哈");
    } catch (Exception ex) {
        return "";
    }
}

这里需要注意的是,ReferenceCofing 官方文档里说很重,需要缓存,言外之意就是不要重复new ReferenceCofing 实例,这样会不断的会注册成为消费者 Consumer

 

但是官方提供了 ReferenceConfigCache ,所以不要自己写个什么静态的 hashMap来缓存,用dubbo开发者提供的工具来获取 我们需要调用的实例

ReferenceConfigCache cache = ReferenceConfigCache.getCache(); ToDoService toDoService1 = cache.get(referenceConfig);

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部