前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >dubbo编程式动态调用

dubbo编程式动态调用

作者头像
王念博客
发布2021-01-18 10:35:05
1.3K0
发布2021-01-18 10:35:05
举报
文章被收录于专栏:王念博客王念博客

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

定一个接口

代码语言:javascript
复制
public interface ToDoService {

    String test(String s);
}

两个实现

代码语言:javascript
复制
@Service(group = "test1")
public class ToDoService1 implements ToDoService {
    @Override
    public String test(String s) {
        return "1" + s;
    }
}
代码语言:javascript
复制
@Service(group = "test2")
public class ToDoService2 implements ToDoService {
    @Override
    public String test(String s) {
        return "2" + s;
    }
}

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

调用方:

代码语言:javascript
复制
/**
 * 执行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);

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档