# simple-rpc
**Repository Path**: feiyi_codes/simple-rpc
## Basic Information
- **Project Name**: simple-rpc
- **Description**: 基于netty + zookeeper 实现的RPC远程远程调用基础框架
- **Primary Language**: Unknown
- **License**: Unlicense
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-02-06
- **Last Updated**: 2025-02-07
## Categories & Tags
**Categories**: Uncategorized
**Tags**: Netty, rpc, zookeeper, SpringBoot
## README
## 基于Netty实现简易RPC框架
#### 模块说明
rpc-client-spring-boot-starter 消息消费方引用(客户端)
rpc-server-spring-boot-starter 消息服务方引用(服务器)
rpc-api-common 公共模块,统一的消息请求及响应格式
rpc-simple-example 使用示例
rpc-customer 消息消费方
rpc-provider 消息生产者
#### 使用说明
1. 服务端引入以下依赖
```
com.feiyi
rpc-provider-api
${project.version}
```
需要对外提供服务的接口实现了上加入@RpcService注解,这样服务端自动时会自动将服务接口注册到ZK服务器上
```
@RpcService
public class UserInfoServiceImpl implements IUserInfoService {
private static final Logger logger = LoggerFactory.getLogger(UserInfoServiceImpl.class);
@Override
public List getUserInfoList() {
return Collections.singletonList(new UserInfo(ThreadLocalRandom.current().nextInt(),"非邑",39));
}
@Override
public void addUserInfo(UserInfo userInfo) {
logger.info("接收用户数据:{}-{}-{}",userInfo.getId(),userInfo.getUsername(),userInfo.getAge());
}
}
```
2. 客户端使用引入以下依赖
```
com.feiyi
rpc-client-spring-boot-starter
${rpc-client.version}
com.feiyi
rpc-provider-api
0.0.1-SNAPSHOT
```
需要调用服务端的的接口在具体的实例上加入@RpcServiceClient注解,支持JSON、Kryo、Protostuff三种序列化方式
```
@RestController
@RequestMapping
public class UserController {
@RpcServiceClient(serializeType= SerializeTypeEnum.Protostuff)
IUserInfoService userInfoService;
@GetMapping("/list")
public ResponseEntity> getUserList(){
return ResponseEntity.ok(userInfoService.getUserInfoList());
}
@PostMapping("/add")
public ResponseEntity