Solon v3.3.3

Solon Rpc 使用注册与发现服务

</> markdown

更多内容可参考:《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

3、代码演示(演示与文档内容略不同)