Browse Source

Merge branch 'dev' of http://192.168.1.220:10080/jiwei/wlyy2.0 into dev

chenweida 7 years ago
parent
commit
7c4029edbd

+ 103 - 0
svr/svr-base/src/main/java/com/yihu/jw/business/demo/DemoController.java

@ -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 "启动断路器";
//    }
}