springcloud Feign断路器实战和问题总结
springcloud Feign断路器实战和问题总结
断路由是防止该服务调用其他外服务时,外服务宕机或者出差时,影响到本服务的宕机,引起大面积的瘫痪,所以才有了断路由的由来。
springcloud Feign已经实现了Hystrix ,所以不用再引Hystrix的maven依赖
1. 搭建一个eureka注册中心和service参考下面的文章
springcloud项目实战
2. 创建项目如下
2.1 pom 文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.xue</groupId>
<artifactId>spring-curstomA</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>spring-curstomA</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<!-- sping cloud 注册服务 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Dalston.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2.2 application.properties配置文件
#服务名称
spring.application.name=ribbon-consumer
#端口号
server.port=5555
#注册中心
eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
spring.cloud.config.discovery.enabled=true
#注册中心的服务id
spring.cloud.config.discovery.serviceId=compute-server
#打开对Hystrix断路由
feign.hystrix.enabled=true
2.3 启动类注解
@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients
public class SpringCurstomAApplication {
public static void main(String[] args) {
SpringApplication.run(SpringCurstomAApplication.class, args);
}
}
2.4 controller层
@RestController
public class MyController {
@Autowired
HelloService service;
@RequestMapping("/feign-customer")
public String testA() {
return service.hello();
}
}
2.5 feign 接口
//服务名 和回调类
@FeignClient(value="COMPUTE-SERVICE1",fallback=HelloServiceFallback.class)
public interface HelloService {
@RequestMapping("/info") //对应具体服务中的接口地址(具体服务controller 层的暴露接口)可以指定具体的get/post
String hello();
}
2.6 feign 实现类
@Component//该注解不能少,否则报错
public class HelloServiceFallback implements HelloService {
@Override
public String hello() {
return "request error";
}
}
效果 把要调用的服务停止后 如下图
总结
如果项目还是报错,要检查三个地方
1. pom文件
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Dalston.RELEASE</version>//一定要是Dalston 不能是 Brixton
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2. application.properties
#打开对Hystrix断路由
feign.hystrix.enabled=true
3. 启动类注解
@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients//该注解不能少
public class SpringCurstomAApplication {
public static void main(String[] args) {
SpringApplication.run(SpringCurstomAApplication.class, args);
}
}
springcloud Feign断路器实战和问题总结相关推荐
- SpringCloud feign 的三种超时时间配置
1.负载均衡 Feign调用服务的默认时长是1秒钟,也就是如果超过1秒没连接上或者超过1秒没响应,就会相应的报错.Feign 的负载均衡底层用的是 Ribbon,其配置如下: ribbon:ReadT ...
- SpringCloud 企业级应用实战
SpringCloud 企业级应用实战 基础教程 SpringCloud 企业级应用实战-基础教程父工程概述 基于Eureka Server实现服务注册 基于Eureka Server实现服务注册高可 ...
- SpringCloud Feign声明式服务调用
SpringCloud Feign声明式服务调用 1. 加入pom依赖 2. Application.java上声明@EnableFeignClients 3. @FeignClient声明接口调用服 ...
- springcloud gateway断路器抛的错default failed and fallback disabled
有没有springcloud的大神碰到这个问题? 这是springcloud gateway断路器抛的错 default failed and fallback disabled., httpStat ...
- SpringCloud之Eureka实战和架构设计解析
SpringCloud之Eureka实战和架构设计解析 Netflix Eureka(后文简称Eureka)是由Netflix开源的一款基于REST的服务发现组件,包括Eureka Server及Eu ...
- SpringCloud Feign 传参问题及传输Date类型参数的时差
1.多参数表单类型传输 @PostMapping("/service/system/advertiser/save")Response<Boolean> saveAdv ...
- Feign、OpenFeign及SpringCloud Feign的区别
Feign.OpenFeign及SpringCloud Feign的区别 1. 三者概念 2. 依赖配置 1. 三者概念 Feign是Spring Cloud组件中一个轻量级RESTful的HTTP服 ...
- SpringCloud Feign实战(二)
一,新建Feign工程microservicecloud-consumer-dept-feign,拷贝microservicecloud-consumer-dept-80这个工程的配置和程序 二,修改 ...
- 微服务架构,springcloud核心组件和实战,docker容器
文章目录 前言 一.微服务开发基础 1.微服务架构开发 1.1单体架构的应用的困境 1.2 微服务架构 1.2.1 理解微服务架构 1.2.1 微服务的优缺点 1.3 微服务架构设计 1.3.1 微服 ...
最新文章
- 3分钟看完一篇论文,这个AI文本生成模型把今年NeurIPS 2300+篇总结了个遍
- 阿里员工哀叹不读书已经没有出路,招聘简历基本都是985
- AI Studio 不同环境下的执行速度
- python接口 同花顺_这是真的么 | 学会了用Python预测股票价格
- python自动测试p-python网络爬虫之自动化测试工具selenium[二]
- mysql中int型的zerofill参数
- Android-NDK-hello-jniCallback
- React中的各个目录文件功能
- oracle 库存管理系统,库存管理系统
- 设计模式在业务系统中的应用
- frm考试可以用计算机,FRM考试,考生自己可以携带计算器吗?
- mysql查询时候返回一个序号
- ShopNc安装过程
- DiscuzNT 交易插件设计之商品添加,编辑和删除(CUD)
- FTP协议是一种用于什么的协议
- 家用空调什么牌子好又省电质量又好
- java.lang.IllegalArgumentException: Failed to decrypt.
- rust墙壁升级点什么_明日之后屋子墙壁怎么升级?墙壁升级条件方法一览
- Java实现图片上传到服务器
- 新手C语言开发详细教程
热门文章
- boost any 实现万能容器_全面剖析 C++ Boost 智能指针!| CSDN 博文精选
- c语言利用线程交替打印奇偶数,两个线程交替打印奇偶数
- oracle字符串使用函数,oracle函数大全-字符串处理函数
- 系统设计题:如何设计一个电商平台积分兑换系统!
- CURL 模拟post和get请求
- python 第13天作业
- 金明的预算方案(分组背包)
- 二道Const,readonly 和 override, new的面试题
- mysql 事务类型表的用法
- CenOS下安装Eclipse并配置PyDev