转载

SpringCloud(八):服务消费者Feign 下

[TOCM]

[TOC]

源码地址:https://github.com/IsResultXaL/springcloud

通过上一节内容介绍与实践,我们已经搭建起微服务架构中的核心组件

  • 服务注册中心

  • 服务提供者

  • 服务消费者

  • 断路器Hystrix

  • Hystrix仪表板

  • Turbine集群监控

  • 服务消费者Feign

SpringCloud(七):服务消费者Feign 中

###Spring Cloud Feign

Hystrix提供的服务降级是服务容错的重要功能,由于Spring Cloud Feign在定义服务客户端的时候与Spring Cloud Ribbon有很大的差别,HystrixCommand定义被封装了起来,以下内容讲解Spring Cloud Feign的降级处理。

  • 改造feign-consumer

    • 为ConsumerService接口编写一个实现类ConsumerServiceFallback package com.caogen.feignconsumer.service;

      import com.caogen.feignconsumer.entity.User;
        import org.springframework.stereotype.Component;
      
        @Component
        public class ConsumerServiceFallback implements ConsumerService{
        	@Override
        	public String hello() {
        		return "error";
        	}
      
        	@Override
        	public String hello(String name) {
        		return "error";
        	}
      
        	@Override
        	public User hello(String name, Integer age) {
        		return new User("未知", 0);
        	}
      
        	@Override
        	public String hello(User user) {
        		return "error";
        	}
        }
    • ConsumerService接口改造 package com.caogen.feignconsumer.service;

      import com.caogen.feignconsumer.entity.User;
        import org.springframework.cloud.netflix.feign.FeignClient;
        import org.springframework.web.bind.annotation.*;
      
        @FeignClient(name = "eureka-client", fallback = ConsumerServiceFallback.class)   //通过@FeignClient注解指定服务名来绑定服务
        public interface ConsumerService {
      
        	@RequestMapping(value = "/hello", method = {RequestMethod.GET})   //绑定REAT接口
        	String hello();
      
        	@RequestMapping(value = "/hello1", method = {RequestMethod.GET})
        	String hello(@RequestParam("name") String name);
      
        	@RequestMapping(value = "/hello2", method = {RequestMethod.GET})
        	User hello(@RequestHeader("name") String name, @RequestHeader("age") Integer age);
      
        	@RequestMapping(value = "/hello3", method = {RequestMethod.POST})
        	String hello(@RequestBody User user);
      
        }

    通过@FeignClient注解的fallback属性来指定对应的服务降级实现类

  • 启动以下应用

    • 服务注册中心 eureka-server 端口 1111

    • 服务消费实例 feign-consumer 端口 1115

这里只启动了服务注册中心和feign消费者,没有启动服务提供者eureka-client

SpringCloud(八):服务消费者Feign 下

通过发送GET请求到 http://localhost:1115/feign-consumer2 ,因为eureka-client服务没有启动,会直接触发服务降级。

SpringCloud(八):服务消费者Feign 下

  • 注意事项

application.yml配置文件里需要开启hystrix

#开启hystrix(要不然降级失败)
  feign:
	hystrix:
	  enabled: true
原文  https://kcaogen.com/blog/info/27
正文到此结束
Loading...