-
第三章讲了服务的的发布,相当于服务的生成,有生产就要有消费,接下来我们讲服务的消费。消费其实就是一个远程调用服务的过程。
-
参考官方代码,我们新建一个项目来实现服务的消费。
-
pom:去掉官方一些用不上的。
com.alibaba dubbo 2.6.0 com.101tec zkclient 0.10 org.apache.curator curator-framework 4.0.1 com.alibaba fastjson 1.2.46 log4j log4j 1.2.17 org.slf4j slf4j-api 1.7.25 org.apache.commons commons-lang3 3.4 io.netty netty-all 4.0.35.Final -
配置文件:从"D:\ideaProjects\dubbo-dubbo-2.6.0\dubbo-demo\dubbo-demo-consumer\src\main\resources\META-INF\spring\dubbo-demo-consumer.xml"拷一份配置文件到/resources下。
<?xml version="1.0" encoding="UTF-8"?><!-- 消费方应用名称,用于计算依赖关系 --> <dubbo:application name="demo-consumer"/> <!-- 使用zookeeper注册中心注册服务 --> <dubbo:registry address="zookeeper://127.0.0.1:2181"/> <!-- 生成远程服务代理,到时候调用其他项目的bean就像调用自己的bean一样。 这里我们要用到的bean是my-dubbo-demo-provider的一个接口, id:自定义, check属性:true,启动时扫描是否存在目标接口,不存在则报错,false,调用时再扫描 interface:与提供方暴露的接口路径一致--> <dubbo:reference id="demoService" check="false" interface="com.haien.service.DemoProviderService"/>
-
记得第三章发布服务时暴露的接口是这个:接口路径与上面一致。
<dubbo:service interface=“com.haien.service.DemoProviderService”
ref=“demoProviderService” /> -
然后我们消费方这边需要真的写一个接口来接收这个远程接口,我们可以直接把提供方的接口文件拷贝过来,不过这样好像代码重复了,没事,以后我们再实现公共抽取。
public interface DemoProviderService {
public String sayHello(String name);
}
-
然后写一个测试类来调用远程接口:
public class ConsumerTest {
public static void main(String[] args) {
ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext(
new String[]{“dubbo-demo-consumer.xml”});
context.start();//bean名和dubbo-demo-consumer.xml->dubbo:reference的id一致 DemoProviderService demoProviderService= (DemoProviderService)context.getBean("demoProviderService"); String result=demoProviderService.sayHello("你好"); System.out.println("远程调用的结果:"+result); try { System.in.read(); } catch (IOException e) { e.printStackTrace(); } context.close(); }
}
-
运行,运行之前先把服务项目启动了,发布了服务这边才调用得到。
-
结果:能正确执行服务方接口的方法。
-
然后登录控制台我们可以看到服务也发布了,消费方也有了:
Dubbo五消费Dubbo服务
最新推荐文章于 2024-04-04 08:58:10 发布