如何使用
2025/9/7大约 2 分钟
如何使用
1. 引入依赖
在项目的pom.xml中添加组件依赖:
<dependency>
<groupId>top.codelong</groupId>
<artifactId>server-find-sdk</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>2. 配置属性
在application.yml中添加配置:
server:
port: 777 # 服务端口
gateway-server:
serverName: test-provider # 服务名称
center-addr: 127.0.0.1:18080 # 网关中心地址
safeKey: safeKey # 安全密钥
safeSecret: safeSecret # 安全凭证
spring:
data:
redis:
database: 0 # Redis数据库索引
host: localhost # Redis主机地址
port: 6379 # Redis端口配置说明:
gateway-server.serverName: 当前服务的名称,用于在网关中心标识服务gateway-server.center-addr: 网关中心的HTTP地址,用于服务注册和心跳上报gateway-server.safeKey和safeSecret: 安全认证凭证,需要与网关中心配置一致- Redis配置用于接收网关中心的心跳触发消息
3. 添加注解
在服务实现类上添加@ApiInterface:
@ApiInterface(interfaceName = "测试接口")
@Service
public class TestServiceImpl implements TestService {
}在服务方法上添加@ApiMethod:
@ApiInterface(interfaceName = "测试接口")
@Service
public class TestServiceImpl implements TestService {
// Dubbo接口:isHttp=0(默认值),会自动暴露为Dubbo服务
@ApiMethod(url = "/test")
public String test(String name) {
return "1 " + name;
}
// HTTP接口:isHttp=1,需要自行实现HTTP Controller
@ApiMethod(isHttp = 1, httpType = HttpTypeEnum.GET, url = "/test2")
public String test2(String name) {
return "2 " + name;
}
}注解参数说明:
isHttp: 是否是HTTP接口(0=Dubbo接口,1=HTTP接口),默认值为0isAuth: 是否需要认证(0=不需要,1=需要),默认值为0httpType: HTTP请求类型(GET/POST/PUT/DELETE),默认值为GETurl: 接口URL路径
4. 启动应用
启动Spring Boot应用后,组件会自动完成以下操作:
- 扫描服务:扫描所有带有
@ApiInterface注解的Bean - 注册接口:将接口和方法信息注册到网关中心
- 暴露Dubbo服务:对于
isHttp=0的方法,自动暴露为Dubbo服务(端口20880) - 启动心跳监听:监听Redis的"heartBeat"频道,接收网关中心的心跳触发消息
5. 注意事项
5.1 接口实现要求
- 服务实现类必须且只能实现一个接口,否则会抛出异常
- 接口必须是public的
5.2 HTTP接口说明
- 当
isHttp=1时,表示这是一个HTTP接口 - SDK只负责将接口信息注册到网关中心,不会自动创建HTTP端点
- 需要自行创建对应的Controller来实现HTTP接口
// 服务层:标记为HTTP接口
@ApiInterface(interfaceName = "测试接口")
@Service
public class TestServiceImpl implements TestService {
@ApiMethod(isHttp = 1, httpType = HttpTypeEnum.GET, url = "/test2")
public String test2(String name) {
return "result";
}
}
// Controller层:需要自行实现HTTP端点
@RestController
public class TestController {
@Resource
private TestService testService;
@GetMapping("/test2")
public String test2(@RequestParam("name") String name) {
return testService.test2(name);
}
}5.3 Dubbo服务暴露
- 当
isHttp=0时(默认值),SDK会自动暴露Dubbo服务 - 每个方法使用独立的group:
method-group-{方法名} - Dubbo服务端口固定为20880
5.4 心跳机制
- 心跳由网关中心主动触发
- 网关中心定期向Redis的"heartBeat"频道发送消息
- SDK监听到消息后,向网关中心发送心跳请求