Solon Rpc 使用注册与发现服务
更多内容可参考:《Solon Cloud 开发(分布式套件)/使用分布式发现与注册服务》
1、使用本地发现服务
- 服务端
不需要改造,也不需要注册。
- 客户端,改造
引入 solon-cloud 插件依赖(自带了本地发现能力)。修改应用配置:
solon.cloud.local:
discovery:
service:
userapi: #添加本地服务发现(userapi 为服务名)
- "http://localhost:8081"
服务使用的地方改造一下:
@Maping("user")
public class UserController {
//直接指定地址和序列化方案(旧的不要了)
//@NamiClient(url = "http://localhost:9001/rpc/v1/user", headers = "Content-Type=application/json")
//指定服务名、路径和序列化方案(新的不用关注服务地址)
@NamiClient(name = "userapi", path="/rpc/v1/user", headers=ContentTypes.JSON)
UserService userService;
@Post
@Mapping("register")
public Result register(User user){
//调用远程服务,添加用户
userService.add(user);
return Result.succeed();
}
}
2、使用分布式(中间件)注册与发现服务
本案使用 water-solon-cloud-plugin 做为注册与发现服务。其它的 solon cloud 注册与服务插件都可。
- 服务端项目,改造
引入 water-solon-cloud-plugin 插件依赖(或者别的注册与发现服务)。修改应用配置:
server.port: 9001
solon.app:
group: "demo"
name: "userapi"
solon.cloud.water:
server: "waterapi:9371"
其它不用动。
- 客户端项目,改造
引入 water-solon-cloud-plugin 插件依赖。修改应用配置:
server.port: 8081
solon.app:
group: "demo"
name: "userdemo"
solon.cloud.water:
server: "waterapi:9371"
服务使用的地方改造一下:
@Maping("user")
public class UserController {
//直接指定地址和序列化方案(旧的不要了)
//@NamiClient(url = "http://localhost:9001/rpc/v1/user", headers = "Content-Type=application/json")
//指定服务名、路径和序列化方案(新的不用关注服务地址)
@NamiClient(name = "userapi", path="/rpc/v1/user", headers=ContentTypes.JSON)
UserService userService;
@Post
@Mapping("register")
public Result register(User user){
//调用远程服务,添加用户
userService.add(user);
return Result.succeed();
}
}
打包后,启动服务。(要在water环境下运行)
java -jar userdemo.jar