123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- package com.yihu.jw.controller;
- import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
- import com.netflix.hystrix.contrib.javanica.annotation.HystrixProperty;
- import com.yihu.jw.exception.SystemException;
- import com.yihu.jw.exception.business.ManageException;
- import com.yihu.jw.feign.PatientFeign;
- import com.yihu.jw.restmodel.common.Envelop;
- import io.swagger.annotations.Api;
- import io.swagger.annotations.ApiOperation;
- import io.swagger.annotations.ApiParam;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.cloud.context.config.annotation.RefreshScope;
- import org.springframework.cloud.sleuth.Tracer;
- import org.springframework.web.bind.annotation.*;
- import javax.servlet.http.HttpServletRequest;
- /**
- * Created by chenweida on 2017/5/10.
- */
- @RestController
- @RequestMapping("/patient")
- @Api(description = "患者")
- @RefreshScope
- public class DemoController {
- private Logger logger = LoggerFactory.getLogger(DemoController.class);
- @Autowired
- private PatientFeign patientFegin;
- @Autowired
- private Tracer tracer;
- // @Value("${test.aaa}")
- private String aaaa;
- @GetMapping("/hello")
- @ResponseBody
- public Envelop hello1(@RequestParam(name = "id") Integer id,
- @RequestParam(name = "name") String name,
- HttpServletRequest request
- ) throws Exception {
- tracer.getCurrentSpan().logEvent("logEvent");
- tracer.getCurrentSpan().tag("test","tag");
- tracer.getCurrentSpan().setBaggageItem("test","BaggageItem");
- switch (id) {
- case 1: {
- throw new ManageException("后台管理系统异常");
- }
- case 2: {
- throw new SecurityException("权限异常");
- }
- case 3: {
- throw new SystemException("后台系统异常");
- }
- }
- return Envelop.getSuccess("请求成功");
- }
- @GetMapping("/hello")
- @ResponseBody
- public String hello2(String id) throws Exception {
- System.out.println("haha2.........");
- return "hello2";
- }
- @GetMapping("/refresh")
- @ResponseBody
- public String refresh(HttpServletRequest request) throws Exception {
- return aaaa;
- }
- @ApiOperation(value = "根据code查找患者")
- @GetMapping(value = "findByCode")
- //配置HystrixProperty 则调用的方法和fallback是同一个线程 否则就不是
- //@HystrixCommand(fallbackMethod = "findByCodeFallback",commandProperties = @HystrixProperty(name = "execution.isolation.strategy",value = "SEMAPHORE"))
- // @HystrixCommand(fallbackMethod = "findByCodeFallback" )
- @HystrixCommand(commandProperties = {
- @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "-1"),//超时时间
- @HystrixProperty(name = "execution.timeout.enabled", value = "false")})
- public String findByCode(
- @ApiParam(name = "code", value = "患者code", required = true) @RequestParam(value = "code", required = true) String code) {
- tracer.getCurrentSpan().logEvent("开始调用微服务查询患者");
- String text1 = patientFegin.findByCode(code);
- tracer.getCurrentSpan().logEvent("查询调用微服务找患者结束");
- return text1;
- }
- // /**
- // * 参数要一致 返回值类型也要一致
- // *
- // * @param code
- // * @return
- // */
- // public String findByCodeFallback(String code) {
- // return "启动断路器";
- // }
- }
|