dubbo - 本地存根

本地存根的优点:consumer可以分担业务逻辑,对原有的业务进行拓展,并增加了容错性。 

 

 dubbo-api

package com.test.service;

public interface PrintStringService {

    String print(String str);
}

dubbo-provider

package com.mzs.service.impl;

import com.test.service.PrintStringService;

public class PrintStringServiceImpl implements PrintStringService {

    @Override
    public String print(String str) {
        return str;
    }

}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
       http://code.alibabatech.com/schema/dubbo
       http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

    <dubbo:application name="Dubbo_Provider"/>

    <dubbo:registry address="zookeeper://127.0.0.1:2181" id="cluster1" check="false" file="C:/dubbo-registry/dubbo-registry.properties"/>

    <dubbo:protocol name="dubbo" port="20882"/>

    <dubbo:service interface="com.test.service.PrintStringService" registry="cluster1" ref="printStringService"
                   protocol="dubbo" version="1.0.0" group="stub-b"/>

    <bean id="printStringService" class="com.mzs.service.impl.PrintStringServiceImpl"/>

</beans>

dubbo-consumer 

package com.mzs.service.stub;

import com.test.service.PrintStringService;

public class PrintStringServiceStub implements PrintStringService {

    private PrintStringService printStringService;

    public PrintStringServiceStub(PrintStringService printStringService) {
        this.printStringService = printStringService;
    }

    @Override
    public String print(String str) {
        try {
            System.out.println("=========");
            return printStringService.print(str);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
       http://code.alibabatech.com/schema/dubbo
       http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

    <dubbo:application name="Dubbo_Customer"/>

    <dubbo:registry address="zookeeper://127.0.0.1:2181" id="cluster1" check="false" file="C:/dubbo-registry/dubbo-registry.properties"/>
    
    <dubbo:reference interface="com.test.service.PrintStringService" group="stub-b" registry="cluster1"
                     timeout="500000" id="printStringService" version="1.0.0" stub="com.mzs.service.stub.PrintStringServiceStub"/>

</beans>
package com.mzs.testCustomer;

import com.test.service.PrintStringService;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestCustomer {
    public static void main(String[] args) {
        ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("customer.xml");
        applicationContext.start();
        PrintStringService printStringService = (PrintStringService) applicationContext.getBean("printStringService");
        String str = printStringService.print("this is the test");
        System.out.println(str);
        System.out.println("=========");
    }
}

猜你喜欢

转载自blog.csdn.net/qq_34561892/article/details/84582293