栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

dubbo之mock模拟

dubbo之mock模拟

1:写在前面

考虑这样的场景,当服务提供者还没有开发完毕或者是因为某些原因无法启动时,会导致服务消费者方的停滞,此时为了能够正常的开发测试,可以使用mock功能,在服务消费者端提供一个服务接口的mock实现类,来模拟调用服务提供者正常获取结果,不同于stub 既支持在服务提供者端配置,也支持在服务消费者端配置,mock是假定服务提供者不可用的情况下产生的一种模拟机制,因此只能在服务消费者端配置使用。

2:实例

以下操作均在服务消费者端进行,因为我们假定的是没有可用的服务提供者端的情况。

2.1:定义服务接口
public interface MyMockService {
    String mockSayHi(String word);
}
2.2:xml



    
    
    
    
    

    

2.3:main
public class ConsumerWithMockMain {
    public static void main(String[] args) throws Exception {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("consumer-with-mock.xml");
        context.start();
        MyMockService myMockService = (MyMockService) context.getBean("myMockServiceInConsumerSide");
        System.out.println(myMockService.mockSayHi("hello"));
    }
}

执行:

可以看到说找不到可用的服务提供者,这是正常的,因为我们根本就没有注册,我们继续向下看。

2.4:使用mock

在xml配置中增加mock=true,如下:




    
    
    
    
    

    

注意这里在dubbo:reference中设置check=“false”,因为不设置的话会检测服务提供者端是否可用,因为不可用,会直接异常,到不了mock那一步。

再次执行main:

此时报找不到XxxxMock类的错误,因为打开mock后会默认以接口名+Mock拼接的方式来查找mock的实现类,因此只需要提供mock实现类就可以了,继续向下看。

2.5:mock实现
public class MyMockServiceMock implements MyMockService {
    @Override
    public String mockSayHi(String word) {
        return "mock impl in consumer side: " + word;
    }
}

再次执行:

可以看到,先报错说找不到对应的service,然后执行了mock逻辑。

3:写在后面

参考文章列表:

dubbo的Mock功能与源码实现

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/612574.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号