| 
					
				 | 
			
			
				@ -0,0 +1,103 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				package com.yihu.jw.business.demo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				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.fegin.DemoFeign; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				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("/demo") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				@Api(description = "demo例子") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				@RefreshScope 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				public class DemoController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private Logger logger = LoggerFactory.getLogger(DemoController.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private DemoFeign 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("/hello2") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @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 "启动断路器"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				} 
			 |