Solon Rpc 应用开发
常见的 Solon Rpc 开发,会有三部分组成:
- 服务的接口申明(会被下面两方引用)
- 服务的实现或提供方(一般是独立的服务)
- 服务的使用或消费方
1、服务接口定义
新建项目:userapi.client
接口的定义,可以不引入任何框架。但它,必须独立成存,有完整的领域独立性。切不要把它放到 common 之类的概念里。
//
// 注意:函数名不能相同!!!
//
public interface UserService{
void add(User user);
User getById(long userId);
}
附带数据实体定义(实体要实现 Serializable,以适应任何序列化方案)
@Data
public class User implements Serializable{
long userId;
String name;
int level;
}
2、服务端项目,服务实现
新建项目:userapi (引入依赖:userapi.client)
本案采用 http + json 架构,只需引入:solon-api 或者 solon-web 或者 solon-rpc 即可。实际上,开发与 web 项目没太大区别。
应用主要配置
server.port: 9001
solon.app:
group: "demo"
name: "userapi"
应用主要代码
public class ServerApp{
public static void main(String[] args){
Solon.start(ServerApp.class, args);
}
}
@Maping("/rpc/v1/user")
@Remoting
public class UserServiceImpl implements UserService{
@Inject
UserMapper userMapper;
@Override
public void add(User user){
userMapper.add(user);
}
@Override
public User getById(long userId){
return userMapper.getById(userId);
}
}
打包后,启动服务
java -jar userapi.jar
3、客户端项目,服务消费
新建项目:userdemo (引入依赖:userapi.client)
本案采用 http + json 架构,只需引入:solon-rpc
即可(它集成了rpc客户端需要的组件)。开发与web项目也没啥区别。
应用主要配置
server.port: 8081
solon.app:
group: "demo"
name: "userdemo"
应用主要代码
public class ClientApp{
public static void main(String[] args){
Solon.start(ClientApp.class, args);
}
}
@Maping("user")
@Controller
public class UserController {
//直接指定地址和序列化方案
@NamiClient(url = "http://localhost:9001/rpc/v1/user", headers = ContentTypes.JSON)
UserService userService;
@Post
@Mapping("register")
public Result register(User user){
//调用远程服务,添加用户
userService.add(user);
return Result.succeed();
}
}
打包后,启动服务。要与 server 的端口不同,这样可以在本机同时运行两个服务。
java -jar userdemo.jar