开启sentinel feign支持并添加demo
parent
b209fc0bb2
commit
7b59766c17
|
|
@ -0,0 +1,23 @@
|
||||||
|
package cn.iocoder.yudao.module.infra.api.demo;
|
||||||
|
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||||
|
import cn.iocoder.yudao.module.infra.api.demo.fallback.SentinelFeigenDemoFallback;
|
||||||
|
import cn.iocoder.yudao.module.infra.enums.ApiConstants;
|
||||||
|
import org.springframework.cloud.openfeign.FeignClient;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* sentinel Feign demo
|
||||||
|
*/
|
||||||
|
@FeignClient(name = ApiConstants.NAME, fallback = SentinelFeigenDemoFallback.class)
|
||||||
|
public interface SentinelFeigenDemoApi {
|
||||||
|
|
||||||
|
String PREFIX = ApiConstants.PREFIX + "/provider/sentinel";
|
||||||
|
|
||||||
|
|
||||||
|
@GetMapping(PREFIX +"/test/{message}")
|
||||||
|
public CommonResult<String> providerSentinelTest(@PathVariable("message") String message);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
package cn.iocoder.yudao.module.infra.api.demo.fallback;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||||
|
import cn.iocoder.yudao.module.infra.api.demo.SentinelFeigenDemoApi;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
public class SentinelFeigenDemoFallback implements SentinelFeigenDemoApi {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CommonResult<String> providerSentinelTest(String message) {
|
||||||
|
return CommonResult.error(HttpStatus.TOO_MANY_REQUESTS.value(), "对方服务不可用,开始服务降级处理");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
package cn.iocoder.yudao.module.infra.api.demo;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 提供 RESTful API 接口,给 Feign 调用
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@Validated
|
||||||
|
public class SentinelFeigenApiImpl implements SentinelFeigenDemoApi {
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CommonResult<String> providerSentinelTest(String message) {
|
||||||
|
return success("OK");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -179,3 +179,9 @@ yudao:
|
||||||
- infra_data_source_config
|
- infra_data_source_config
|
||||||
|
|
||||||
debug: false
|
debug: false
|
||||||
|
|
||||||
|
--- #################### 开启feign对sentinel的支持 ####################
|
||||||
|
|
||||||
|
feign:
|
||||||
|
sentinel:
|
||||||
|
enabled: true
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,28 @@
|
||||||
|
package cn.iocoder.yudao.module.system.controller.admin.demo;
|
||||||
|
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||||
|
import cn.iocoder.yudao.module.infra.api.demo.SentinelFeigenDemoApi;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.annotation.security.PermitAll;
|
||||||
|
|
||||||
|
@Tag(name = "管理后台 - Sentinel Feigen Demo")
|
||||||
|
@RestController()
|
||||||
|
@RequestMapping("/system/sentinel/demo")
|
||||||
|
public class SentinelFeigenDemoController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SentinelFeigenDemoApi sentinelFeigenDemoApiService;
|
||||||
|
|
||||||
|
@GetMapping("/provider/{message}")
|
||||||
|
@PermitAll
|
||||||
|
public CommonResult<String> providerSentinelTest(@PathVariable("message") String message) {
|
||||||
|
return sentinelFeigenDemoApiService.providerSentinelTest(message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,12 +1,17 @@
|
||||||
package cn.iocoder.yudao.module.system.framework.rpc.config;
|
package cn.iocoder.yudao.module.system.framework.rpc.config;
|
||||||
|
|
||||||
import cn.iocoder.yudao.module.infra.api.config.ConfigApi;
|
import cn.iocoder.yudao.module.infra.api.config.ConfigApi;
|
||||||
|
import cn.iocoder.yudao.module.infra.api.demo.SentinelFeigenDemoApi;
|
||||||
|
import cn.iocoder.yudao.module.infra.api.demo.fallback.SentinelFeigenDemoFallback;
|
||||||
import cn.iocoder.yudao.module.infra.api.file.FileApi;
|
import cn.iocoder.yudao.module.infra.api.file.FileApi;
|
||||||
import cn.iocoder.yudao.module.infra.api.websocket.WebSocketSenderApi;
|
import cn.iocoder.yudao.module.infra.api.websocket.WebSocketSenderApi;
|
||||||
import org.springframework.cloud.openfeign.EnableFeignClients;
|
import org.springframework.cloud.openfeign.EnableFeignClients;
|
||||||
|
import org.springframework.cloud.openfeign.FeignClientsConfiguration;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
import org.springframework.context.annotation.Import;
|
||||||
|
|
||||||
@Configuration(proxyBeanMethods = false)
|
@Configuration(proxyBeanMethods = false)
|
||||||
@EnableFeignClients(clients = {FileApi.class, WebSocketSenderApi.class, ConfigApi.class})
|
@EnableFeignClients(clients = {FileApi.class, WebSocketSenderApi.class, ConfigApi.class, SentinelFeigenDemoApi.class})
|
||||||
|
@Import({SentinelFeigenDemoFallback.class})
|
||||||
public class RpcConfiguration {
|
public class RpcConfiguration {
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -174,6 +174,7 @@ yudao:
|
||||||
- /rpc-api/system/tenant/valid # 防止递归。避免调用 /rpc-api/system/tenant/valid 接口时,又去触发 /rpc-api/system/tenant/valid 去校验
|
- /rpc-api/system/tenant/valid # 防止递归。避免调用 /rpc-api/system/tenant/valid 接口时,又去触发 /rpc-api/system/tenant/valid 去校验
|
||||||
- /rpc-api/system/tenant/id-list # 获得租户列表的时候,无需传递租户编号
|
- /rpc-api/system/tenant/id-list # 获得租户列表的时候,无需传递租户编号
|
||||||
- /rpc-api/system/oauth2/token/check # 访问令牌校验时,无需传递租户编号;主要解决上传文件的场景,前端不会传递 tenant-id!
|
- /rpc-api/system/oauth2/token/check # 访问令牌校验时,无需传递租户编号;主要解决上传文件的场景,前端不会传递 tenant-id!
|
||||||
|
- /admin-api/system/sentinel/demo/provider/* # 示例演示,演示 Sentinel 熔断降级
|
||||||
ignore-tables:
|
ignore-tables:
|
||||||
- system_tenant
|
- system_tenant
|
||||||
- system_tenant_package
|
- system_tenant_package
|
||||||
|
|
@ -205,3 +206,9 @@ yudao:
|
||||||
end-code: 9999 # 这里配置 9999 的原因是,测试方便。
|
end-code: 9999 # 这里配置 9999 的原因是,测试方便。
|
||||||
|
|
||||||
debug: false
|
debug: false
|
||||||
|
|
||||||
|
--- #################### 开启feign对sentinel的支持 ####################
|
||||||
|
|
||||||
|
feign:
|
||||||
|
sentinel:
|
||||||
|
enabled: true
|
||||||
Loading…
Reference in New Issue