Dubbo 服務治理-mock實例

 

轉:java

Dubbo 服務治理-mock實例

2017.02.28 10:56* 字數 514 閱讀 2552評論 10

Dubbo的mock本身折騰的實例,配置信息有點簡陋,有點粗鄙,若是是處女座的程序員,就建議看看就行哈。程序員

其實Dubbo的mock的實例原理簡單而言就是調用真實的接口實現類不通,就會調用你的mock類(mock類和真實實現類都Implements 同一個接口,本身mock的名字要是:接口類名+mock)。web

我這我的直接來例子,不太喜歡講太多文縐縐的字。處女座的程序員就是這樣的哈,比較直接。spring

接口定義和mock定義(可單獨在一個maven module)

接口類:maven

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 配置文件內容:ide

 

spring xml 配置 截圖,不能粘貼代碼了

接口實現類:ui

public class HelloServiceImpl implements HelloService {spa

 

 

Dubbo消費端

消費端的配置:code

spring 的配置最核心的配置:orm

<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 來源:簡書 簡書著做權歸做者全部,任何形式的轉載都請聯繫做者得到受權並註明出處。
相關文章
相關標籤/搜索