zoukankan      html  css  js  c++  java
  • Dubbo 服务治理-mock实例

    转:

    Dubbo 服务治理-mock实例

    2017.02.28 10:56* 字数 514 阅读 2552评论 10

    Dubbo的mock自己折腾的实例,配置信息有点简陋,有点粗鄙,如果是处女座的程序员,就建议看看就行哈。

    其实Dubbo的mock的实例原理简单而言就是调用真实的接口实现类不通,就会调用你的mock类(mock类和真实实现类都Implements 同一个接口,自己mock的名字要是:接口类名+mock)。

    我这个人直接来例子,不太喜欢讲太多文绉绉的字。处女座的程序员就是这样的哈,比较直接。

    接口定义和mock定义(可单独在一个maven module)

    接口类:

    package cn.nest.facde;
    
    public interface HelloService {
    
    String sayHello(String content);
    
    }
    
    

    mock类
    (mock类和接口类要在同一个项目中,其他项目方便maven依赖)
    package cn.nest.facde;
    
    @SuppressWarnings("unused")
    
    public class HelloServiceMock implements HelloService {
    
        public HelloServiceMock() {
        }
    
        @Override
    
        public String sayHello(String content) {
    
            System.out.println("dubbo mock sample....");
    
            return "say hello fail";
    
        }
    
    }
     
    接口实现类:
    public class HelloServiceImpl implements HelloService {
        @Override
        public String sayHello(String s) {
            System.out.println("dubbo customer param value: " + s);// mock verify
    
            try {
    
                Thread.sleep(10 * 1000);
    
            } catch (InterruptedException e) {
    
                e.printStackTrace();
    
            }
            
            boolean isCustomer = RpcContext.getContext().isProviderSide();
            System.out.println("provider iscustomer :" + isCustomer);return "say hello :" + s;
    
        }
    }
    
    

    Dubbo的服务端

    Spring 配置文件内容:

    spring xml 配置 截图,不能粘贴代码了

    接口实现类:

    public class HelloServiceImpl implements HelloService {

    Dubbo消费端

    消费端的配置:

    spring 的配置最核心的配置:

    <dubbo.reference id="helloService" interface="cn.nest.facde.HelloService" mock="true" timeout="1000" check="false">

    消费端代码:

    package cn.nest;
    
    import cn.nest.facde.HelloService;
    
    import cn.nest.facde.HelloSomeOneService;
    
    import com.alibaba.dubbo.rpc.RpcContext;
    
    import org.springframework.boot.CommandLineRunner;
    
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    import org.springframework.boot.builder.SpringApplicationBuilder;
    
    import org.springframework.context.ApplicationContext;
    
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    import java.io.IOException;
    
    @SpringBootApplication
    
    public class DubboConsumerApplication implements CommandLineRunner {
    
        ApplicationContext factory = new ClassPathXmlApplicationContext("classpath:spring-dubbo-consumer.xml");
    
        public static void main(String[] args) {
    
            new SpringApplicationBuilder().sources(DubboConsumerApplication.class).web(false).run(args);
    
            while (true) {
    
                try {
    
                    System.in.read();
    
                } catch (IOException e) {
    
                    e.printStackTrace();
    
                }
    
            }
    
        }
    
        public void run(String... strings) throws Exception {
    
            HelloService iHelloService = (HelloService) factory.getBean("helloService");
    
            System.out.println(iHelloService.sayHello("botter"));
    
        }
    
    }

    ==============

    相关其他知识:

    在开发自测,联调过程中,经常碰到一些下游服务调用不通的场景,这个时候我们如何不依赖于下游系统,就业务系统独立完成自测?
    dubbo自身是支持mock服务的,在reference标签里,有一个参数mock,该参数有四个值,false,default,true,或者Mock类的类名。分别代表如下含义:

    • false,不调用mock服务。
    • true,当服务调用失败时,使用mock服务。
    • default,当服务调用失败时,使用mock服务。
    • force,强制使用Mock服务(不管服务能否调用成功)。(使用xml配置不生效,使用ReferenceConfigAPI可以生效)

    使用方法:

    • 将mock参数启用,在<dubbo:reference>中添加参数项mock=true。



    作者:一滴水的坚持
    链接:https://www.jianshu.com/p/ce8de35986cf
    来源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
  • 相关阅读:
    Elasticsearch简介及C#操作库
    开发商城
    小程序源码下载[demo整理自github]
    基于vue的可视化编辑器
    Ocelot中文文档-Qos服务质量(转)
    干货 | Elasticsearch、Kibana数据导出实战
    java常用的框架介绍
    操作系统基础知识2
    操作系统基础知识
    计算机网络基础知识2
  • 原文地址:https://www.cnblogs.com/libin6505/p/10592669.html
Copyright © 2011-2022 走看看