nacos学习二服务消费

2019-01-07  本文已影响10人  昨日已逝去

springcloud远程调用提供了二种方式:一种restTemplete 一种fegin方式

restTemplete方式

    @Autowired
    private RestTemplate restTemplate;
    @RequestMapping(value = "/echo-rest/{str}", method = RequestMethod.GET)
    public String rest(@PathVariable String str) {
        return restTemplate.getForObject("http://service-provider/echo/" + str,
                String.class);
    }

fegin方式

大家都知道使用fegin一般会引入熔断机制。而spring cloud alibaba提供了sentinel组件给我使用。

    @FeignClient(name = "service-provider", fallback = EchoServiceFallback.class, configuration = FeignConfiguration.class)
    public interface EchoService {
        @RequestMapping(value = "/echo/{str}", method = RequestMethod.GET)
        String echo(@PathVariable("str") String str);

        @RequestMapping(value = "/divide", method = RequestMethod.GET)
        String divide(@RequestParam("a") Integer a, @RequestParam("b") Integer b);

        @RequestMapping(value = "/notFound", method = RequestMethod.GET)
        String notFound();
    }

当我们访问服务出现错误或访问不存在时,会回调自己的实现

class EchoServiceFallback implements EchoService {
    @Override
    public String echo(@PathVariable("str") String str) {
        System.out.println("echo==================");
        return "echo fallback";
    }

    @Override
    public String divide(@RequestParam Integer a, @RequestParam Integer b) {
        System.out.println("divide================");
        return "divide fallback";
    }

    @Override
    public String notFound() {
        System.out.println("notFound=================");
        return "notFound fallback";
    }
}
上一篇 下一篇

猜你喜欢

热点阅读