Mavenの依存関係を追加する
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
Feignを構成する
# 配置Feign
feign:
client:
config:
# 服务提供者的服务名
nacos-school-server:
# 设置日志级别
loggerLevel: FULL
# 设置契约配置:支持Feign原生注解
# contract: feign.Contract.Default
# 设置请求超时时间,超时会抛出异常,单位毫秒,默认值2s
# readTimeout: 5000
# 设置连接超时时间,超时会抛出异常,单位毫秒,默认值5s
# connectTimeout: 10000
# 配置自定义请求拦截器
requestInterceptors:
- com.tigerkin.feign.CustomRequestIntercoptor
Feignインターフェースを追加
/**
* @ClassName SchoolServiceFeign
* @Description
* value: 服务器提供者的应用程序名
* path: 可以配置统一前缀路径
* fallback: 异常回调
* @Author tigerkin
* @Date 2022/3/3 14:14
*/
@Component
@FeignClient(value = "nacos-school-server", path = "/school", fallback = SchoolServiceFallback.class)
public interface SchoolServiceFeign {
// Feign原生注解:@RequestLine("GET /get") 请求映射注解,不指定GET POST等请求方法就会抛出异常
// Feign原生注解:@Param() 参数注解
@GetMapping("/get")
String get();
}
Feignコールバックを追加
偽のコールバックは、リボンまたはセンチネルヒューズのダウングレードを統合する必要があります。統合しないと、有効になりません。リボンはメンテナンスされなくなったため、Sentinelはここに統合されています。
- 依存関係を追加する
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
- 構成を追加する
feign:
# 集成Sentinel后,需要设置为true
sentinel:
enabled: true
- コールバックは統合後に有効になります
/**
* @ClassName SchoolServiceFallback
* @Description 异常回调需要实现Feign接口
* @Author tigerkin
* @Date 2022/3/3 14:15
*/
@Component
public class SchoolServiceFallback implements SchoolServiceFeign {
@Override
public String get() {
return "获取学校请求调用失败";
}
}
サービスコール
サービス呼び出しは、メソッドの呼び出しと同じように、比較的単純です。依存性注入Feignインターフェース、そしてメソッドを呼び出すだけです。
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
SchoolServiceFeign schoolServiceFeign;
@GetMapping("/getSchool")
public String getSchool() {
return String.format("[Feign] %s", schoolServiceFeign.get());
}
}