package org.jeecg.modules.test.feign.controller; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.jeecg.common.api.vo.Result; import org.jeecg.modules.test.feign.client.JeecgTestClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import com.alibaba.csp.sentinel.annotation.SentinelResource; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; /** * 微服务单元测试 * @author: zyf * @date: 2022/04/21 */ @Slf4j @RestController @RequestMapping("/sys/test") @Api(tags = "【微服务】单元测试") public class JeecgTestFeignController { @Autowired private JeecgTestClient jeecgTestClient; /** * 熔断: fallbackFactory优先于 @SentinelResource * * @param name * @return */ @GetMapping("/getMessage") @ApiOperation(value = "测试feign调用demo服务1", notes = "测试feign @SentinelResource熔断写法 | 测试熔断关闭jeecg-demo服务") @SentinelResource(value = "test_more_getMessage", fallback = "getDefaultUser") public Result getMessage(@RequestParam(value = "name", required = false) String name) { log.info("---------Feign fallbackFactory优先级高于@SentinelResource-----------------"); String resultMsg = jeecgTestClient.getMessage(" I am jeecg-system 服务节点,呼叫 jeecg-demo!"); return Result.OK(null, resultMsg); } /** * 测试方法:关闭demo服务,访问请求 http://127.0.0.1:9999/sys/test/getMessage * * @param name * @return */ @GetMapping("/getMessage2") @ApiOperation(value = "测试feign调用demo服务2", notes = "测试feign fallbackFactory熔断写法 | 测试熔断关闭jeecg-demo服务") public Result getMessage2(@RequestParam(value = "name", required = false) String name) { log.info("---------测试 Feign fallbackFactory-----------------"); String resultMsg = jeecgTestClient.getMessage(" I am jeecg-system 服务节点,呼叫 jeecg-demo!"); return Result.OK(null, resultMsg); } @GetMapping("/fallback") @ApiOperation(value = "测试熔断", notes = "测试熔断") @SentinelResource(value = "test_more_fallback", fallback = "getDefaultUser") public Result test(@RequestParam(value = "name", required = false) String name) { if (StringUtils.isEmpty(name)) { throw new IllegalArgumentException("name param is empty"); } return Result.OK(); } /** * 熔断,默认回调函数 * * @param name * @return */ public Result getDefaultUser(String name) { log.info("熔断,默认回调函数"); return Result.error(null, "访问超时, 自定义 @SentinelResource Fallback"); } }