赞
踩
提示:本文实现RPC的方法和具体步骤,注意,需要引入Dubbo2.7.7以上版本的依赖
笔者从入门Java后端至今,一直都在做笔记(电子笔记),但是始终没有动手写博客。如今笔者即将毕业,现阶段正处于实习期,虽然有了一定的Java后端基础,但仍然需快速的学习。本次起笔写博客,是想从此刻开始,对自己学到的东西进行纪录,以便日后遇到类似的问题时,能够方便快捷的解掉。本文主要记录今日在公司实习培训时,实现RPC的方法与步骤,具体如下:
一、实现RPC的思路
由于笔者培训时,主管已经帮我配好了注册中心,所以这里先暂时忽略注册中心的配置,下文提到的Service模块和Web模块启动后,能够注册到注册中心,并且能够发现在注册中心注册的所有服务,并实现远程调用,这个过程大概如图1所示,最后在Service模块实现并暴露服务,在Web模块注入并调用服务。
在配置好注册中心等环境后,在Service模块实现具体的业务逻辑,并且通过@DubboService注解把服务暴露,暴露的接口类需要实现远程服务接口RemoteService,代码如下所示:
- // 实现并暴露接口
- @DubboService(interfaceClass = RemoteService.class)
- public class ServiceImpl implements RemoteService {
- // 实现 查询用户
- public AuthUser getUser(String id){
- User entity = new User();
- entity.setId(id);
- User user = userService.selectOne(id);
- return user;
- }
- }
注意:RemoteService.class是一个接口,用来约束对外暴露的接口的行为,其定义如下:
- /**
- * 该类定义在公共模块,comment中,提供给所有服务引用
- */
- public interface RemoteService(){
- /**
- * 根据 id 查询用户信息
- *
- */
- User getUser(Integer id);
-
- // ...其他行为(方法)
- }
使用@DubboReference在Web模块注入并调用远程接口,代码如下所示:
-
- @RestController
- @RequestMapping("/query")
- public class MyController {
- // 注入远程服务,RemoteService 来自工共模块 comment
- @DubboReference
- private RemoteService remoteService;
-
- @GetMapping("/user/{id}")
- @ApiOperation(valeu = "根据id查询用户")
- public User getUser(@PathVariable("id") Integer id){
- return remoteService.getUser(id);
- }
-
- }
本文记录了在配置好注册中心等环境下,实现远程调用的思路和步骤,主要是创建和实现服务提供者Service模块 和 服务消耗者 Web模块。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。