Dubbo 服务治理-mock实例

作者: 老生住长亭 | 来源:发表于2017-02-28 10:56 被阅读615次

    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";

    }

    }

    Dubbo的服务端

    Spring 配置文件内容:

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

    接口实现类:

    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 的配置最核心的配置:

    <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"));

    }

    }

    好了,基本上就这么多,第一次写技术博客,比较简陋,看不懂的请见谅,理解~~~~

    相关文章

      网友评论

      • 4848ad9440b8:楼主,服务停掉,客户端能够走到mock中吗?mock需要服务端配置吗
        老生住长亭:@QQ好的 这个是服务端出现异常,会走mock,不能停掉服务
        4848ad9440b8:@老生住长亭 你的服务端是几个节点
        4848ad9440b8:我停掉服务端,然后客户端调用出现com.alibaba.dubbo.rpc.RpcException: Forbid consumer

      本文标题:Dubbo 服务治理-mock实例

      本文链接:https://www.haomeiwen.com/subject/kvcxgttx.html