本地存根的优点: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("=========");
}
}