ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Feign服务消费 + Hystrix熔断

2020-05-05 21:57:29  阅读:282  来源: 互联网

标签:Feign String Hystrix value class 熔断 eureka public cloud


yls
2020/5/5

1.搭建服务注册中心

2.创建服务提供者

  • 新建一个module,导入依赖包
        <!--服务注册与发现中心 start-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <!--服务注册与发现中心 end-->
  • 启动类添加注解 @EnableDiscoveryClient
  • 添加配置文件application.yml,将服务注册到eureka中
spring:
  application:
    name: itoken-service-redis
server:
  port: 8502
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
  • 创建一个controller,以供消费者调用
@RestController
public class DemoController {
    @PostMapping(value = "/put")
    public String put(String value){

        return value+"ok";
    }
}
  • 启动服务

3.创建服务消费者

  • 新建module,导入依赖包
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
<!--熔断器 start   由于feign自带,所有不需要添加
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
        </dependency>
        熔断器 end-->
        <!--服务消费者 feign   start-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        <!--服务消费者  feign  end-->
  • 启动类添加注解,如下所示
@EnableDiscoveryClient
@EnableFeignClients
@SpringBootApplication
public class ItokenWebadminApplication {
    public static void main(String[] args) {
        SpringApplication.run(ItokenWebadminApplication.class, args);
    }
}
  • 添加配置文件application.yml
spring:
  application:
    name: itoken-web-admin

#开启熔断器
feign:
  hystrix:
    enabled: true

server:
  port: 8601

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
  • 创建service用于消费服务提供者的服务
//itoken-service-redis是服务提供者的服务名称
//fallback = RedisServiceFallBack.class是熔断操作类
@FeignClient(value = "itoken-service-redis",fallback = RedisServiceFallBack.class)
public interface DemoService {
    @PostMapping(value = "/put")
    public String put(@RequestParam(value = "value") String value);
}
  • 熔断操作类
@Component
public class RedisServiceFallBack implements DemoService {
    @Override
    public String put(String value) {
        return FallBack.badGateWay();//统一管理熔断信息
    }
}
/**
 * 统一管理熔断信息
 */
public class FallBack {
    public static String badGateWay(){
        try {
            return JsonUtil.objectToString(ResultUtil.error(502,"内部错误"));
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        return null;
    }
}
  • 创建controller调用service
@RestController
public class UserController {
    @Autowired
    private DemoService demoService;

    @RequestMapping(value = {"/index"})
    public String index(){
        String json = demoService.put("hello ");
        System.out.println(json);
        return json;
    }
}
  • 浏览器访问http://localhost:8601/index,将会返回 hello ok,表示服务消费成功。

标签:Feign,String,Hystrix,value,class,熔断,eureka,public,cloud
来源: https://www.cnblogs.com/yloved/p/12833037.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有