欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  互联网

Dubbo服务分组实现举例

程序员文章站 2022-03-04 21:27:52
服务分组与多版本控制的使用方式几乎是相同的,只要将 version 替换为 group 即可。 但使用目的不同。使用版本控制的目的是为了升级,将原有老版本替换掉,将来不再提供老 版本的服务,所以不同版本间不能出现相互调用。而分组的目的则不同,其也是针对相同接 口,给出了多种实现类。但不同的是,这些不同实现并没有谁替换掉谁的意思,是针对不同 需求,或针对不同功能模块所给出的不同实现。这些实现所提供的服务是并存的,所以它们 间可以出现相互调用关系。例如,对于支付服务的实现,可以有微信支付实现与支付宝支付......

服务分组与多版本控制的使用方式几乎是相同的,只要将 version 替换为 group 即可。 但使用目的不同。使用版本控制的目的是为了升级,将原有老版本替换掉,将来不再提供老 版本的服务,所以不同版本间不能出现相互调用。而分组的目的则不同,其也是针对相同接 口,给出了多种实现类。但不同的是,这些不同实现并没有谁替换掉谁的意思,是针对不同 需求,或针对不同功能模块所给出的不同实现。这些实现所提供的服务是并存的,所以它们 间可以出现相互调用关系。例如,对于支付服务的实现,可以有微信支付实现与支付宝支付 实现等。
1、创建提供者

(1)定义两个接口实现类

public class WeixinServiceImpl implements SomeService {
    @Override
    public String hello(String name) {
        System.out.println("使用【微信】付款");
        return "WeixinServiceImpl";
    }
}
public class ZhifubaoServiceImpl implements SomeService {
    @Override
    public String hello(String name) {
        System.out.println("使用【支付宝】付款");
        return "ZhifubaoServiceImpl";
    }
}

(2)修改配置文件

Dubbo服务分组实现举例

2、创建消费者

(1)修改配置文件

Dubbo服务分组实现举例

(2)修改消费者类

public static void main(String[] args) {
        ApplicationContext ac = new ClassPathXmlApplicationContext("spring-consumer.xml");

        // 使用微信支付
        SomeService weixinService = (SomeService) ac.getBean("weixin");
        String weixin = weixinService.hello("China");
        System.out.println(weixin);

        // 使用支付宝支付
        SomeService zhifubaoService = (SomeService) ac.getBean("zhifubao");
        String zhifubao = zhifubaoService.hello("China");
        System.out.println(zhifubao);
    }

3、运行结果

客户端代码会根据定义的dubbo的id找到对应分组的实现

本文地址:https://blog.csdn.net/xyajia/article/details/107678019

相关标签: dubbo