开发者学堂课程【阿里巴巴分布式服务框架 Dubbo 快速入门:服务消费者配置&测试】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/624/detail/9462
服务消费者配置&测试
内容介绍:
一、消费者配置
二、进行测试
前面配置好了服务的提供者,并把它注册在了注册中心,在管理台可以看到,下面我们来配置消费者。让 order-service 调用 user-service 服务。
一、消费者配置:
第一步,将 dubbo 的框架以及操作 zookeeper 的 pom.xml 复制过来,将依赖引入进来。
第二步,消费者的配置参照官方文档,只需要配置消费者的名字复制过来,并说一下注册中心的地址,要消费哪一个服务。
1、应用名
<dubbo:applicationname”order-service-consumer”></dubbo:application>
2、指定注册中心的地址
<dubbo:registryaddress”zookeeper://127.0.0.1:2181”></dubbo:registry>
3、声明需要调用的远程服务的接口(为远程服务生成代理)
<dubbo:referenceinterface”com.atguigu.gmall.service.UserServiceid” UserService”></dubbo:reference>
由于 UserService 在容器中,可以在 Order service 用@Autowired 注入进来,把Oder service 也加在容器中,注意 Service 目前还是 stereotype.Service 注解,把这个自动注入进来,调用的声明是远程接口,会从 zookeeper 中获取远程接口的调用地址,为了使注解在此处生效,必须写上扫描,必须把 context 名称空间加进来。
代码为
<context:component-scanbase-package=” com.atguigu.gmall.service.iml”></context:component-scan>
二、进行测试
名称为 MainApplication
启动加载配置文件,启动 ioc 容器
代码为
public static void main (String{ } args) {
ClassPathXmlApplicationContext applicationContext = new
ClassPathXmlApplication
OrderService orderService = applicationContext.
getBean(OrderService.
orderService. initOrder("1");
public static void main (String{ } args) {ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationOrderService orderService = applicationContext. getBean(OrderService.orderService. initOrder("1") ;
传一个用户 id,OrderService 会调用 UserService,调用记录打印一下,代码为 System.oput.println(“用户 id,“+userId);
查询用户的收货地址改为:
List<UserAddress>addreddList=userService.getUserAddressList(userId)
For ( UserAddress userAdress : addressList ){
System.out.println(userAddress.getUserAddress();
//打印地址信息
同时也可以 System.in.read(); 阻塞一下,可以在监控台看到提供者上线了,否则程序一调,提供者就中断了,System.out.println(“调用完成…”);右键运行起来,发现打印的信息,现在 orderService 里用的是 userService 指示接口,但 dubbo 配置的接口是远程引用,dubbo 会从注册中心找到接口真正,会找到 userservice,调用结束。
刷新控制台,有两个应用,一个是提供者,一个是消费者;提供者为 userService,orderService 为消费者,调用成功。