Spring boot2.0.x+SpringCloud(Finchley版本)分布式架构--断路器(Hystrix)(三)

前言声明:
如果您有更好的技术与作者分享,或者商业合作;请访问作者个人网站 http://www.esqabc.com/view/message.html 留言给作者。
如果该案例触犯您的专利,请在这里:http://www.esqabc.com/view/message.html 留言给作者说明原由,作者一经查实,马上删除。

三,Feign与RestTemplate+Ribbon分别使用断路器(Hystrix)

开始前准备工作:
1,创建两个服务消费者(esq-consumerRib和esq-consumerFei)
1)esq-consumerFei:负载均衡客户端使用Feign
2)esq-consumerRib:负载均衡客户端使用RestTemplate+Ribbon
架构如下:
在这里插入图片描述

1,服务消费者(esq-consumerRib)
在这里插入图片描述
1,pom配置文件添加:

        <!-- Hystrix断路器的jar -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
  		</dependency>

2,UserServiceImpl类改造;

/**
 * 用户接口实现
 * @author esq
 * @Create 2019-09-09 09:09:09
 * @Website www.esqabc.com
 * @WeChat 
 */
@Service
public class UserServiceImpl implements UserService{
	
	@Autowired
    RestTemplate restTemplate;
	
	@HystrixCommand(fallbackMethod = "esquserError")
	public String getServiceInfo(String name) {
		return restTemplate.getForObject("http://ESQ-SERVICE/esquser?name="+name,String.class);
	}
	
	//服务出错或者无法访问处理方法
	public String esquserError(String name) {
        return "您好"+name+",对不起我们的系统服务出错或者无法访问,给你带来不便,请您谅解!";
    }
}

3,application.properties改造:


# 配置启动端口号
server.port=9222
# 配置项目访问路径
#server.context-path=/eureka
#配置服务名称
spring.application.name=esq-consumerrib
#服务注册中心地址
eureka.client.serviceUrl.defaultZone=http://localhost:9000/eureka/

1,服务消费者(esq-consumerFei)
在这里插入图片描述

1,pom配置文件添加:

        <!-- Hystrix断路器的jar -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
  		</dependency>

2,UserService类改造:

package com.esq.consumer.service;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

import com.esq.consumer.service.impl.UserServiceImpl;


/**
 * 通过@ FeignClient("服务名"),来指定调用哪个服务。比如在代码中调用了esq-service服务的"esquser"接口
 * 指定出错提示实现类:UserServiceImpl
 * @author esq
 * @Create 2019-09-09 09:09:09
 * @Website www.esqabc.com
 * @WeChat 
 */
@FeignClient(value = "esq-service",fallback=UserServiceImpl.class)
public interface UserService {
	
	 @RequestMapping(value = "/esquser",method = RequestMethod.GET)
	 public String getServiceInfo(@RequestParam(value = "name") String name);
}

3,UserServiceImpl类改造:

package com.esq.consumer.service.impl;

import org.springframework.stereotype.Component;

/**
 * UserService接口类出错提示实现类
 * @author esq
 * @Create 2019-09-09 09:09:09
 * @Website www.esqabc.com
 * @WeChat 
 */
@Component
public class UserServiceImpl {
	
	 /**
	  * getServiceInfo接口出错或者无法访问,显示方法
	  */
	 public String getServiceInfo(String name) {
		return "您好"+name+"对不起我们的系统服务出错或者无法访问,给你带来不便,请您谅解!";
	 }
}

3,application.properties改造:



# 配置启动端口号
server.port=9221
# 配置项目访问路径
#server.context-path=/eureka
#配置服务名称
spring.application.name=esq-consumerfei
#服务注册中心地址
eureka.client.serviceUrl.defaultZone=http://localhost:9000/eureka/

注意:项目启动顺序为:先启动注册中心(esq-registry) ,然后启动(服务生产者1,2)(esq-provider-a,esq-provider-b) 最后启动服务消费者1,2(esq-consumerFei,esq-consumerRib)

浏览器输入:http://localhost:9221/esquser?name=12312
会交替显示:1,欢迎12312访问,来自服务端口:9011的服务。2,欢迎12312访问,来自服务端口:9022的服务。
如果断开服务生产者(esq-provider-a)端口为:11
这时候11端口的服务返回:您好12312,对不起我们的系统服务出错或者无法访问,给你带来不便,请您谅解!
22端口的服务返回:欢迎12312访问,来自服务端口:9022的服务
浏览器输入:http://localhost:9222/esquser?name=12312 和上面的效果同理
说明断路器(Hystrix)起作用了

===============================

更多请访问:https://blog.csdn.net/esqabc/article/details/87804603

=================================

spring boot+spring cloud视频教学下载全套。( ├1 公开课.avi ├10 4.6 Ribbon-3使用配置文件自定义Ribbon Client.avi ├11 4.7 Ribbon-4 Ribbon脱离Eureka使用.avi ├12 4.8 Feign-1 Feign的简介及基础使用.avi ├13 4.9 Feign-2覆写Feign的默认配置.avi ├14 4.10 Fegion-3覆写Fegion的默认配置及Fegion的日志.avi ├15 4.11 Fegion-4解决Fegion第一次请求timeout的问题.avi ├16 4.12 Eureka深入理解.avi ├17 4.13 Eureka常用配置详解.avi ├18 4.14 Eurek Ribbon Feign常见问题及解决.avi ├19 5.1超时机制,断路器模式简介.avi ├2 1.1 微服务架构概述.avi ├20 5.2 Hystrix简介及简单代码示例.avi ├20 5.2Hystrix简介及简单代码事例.avi ├21 Hystrix Health Indicator及Metrics Stream.avi ├22 5.4 Hystrix Health Indicator及Metrics Stream支持.avi ├23 5.5 Fegion的Hystrix支持.avi ├24 5.6如何禁用单个FegionClient的Hystrix的支持.avi ├25 5.7 Feign使用fallbackFactory属性打印fallback异常.avi ├26 5.8 Hystrix Dashboard的使用与常见问题总结.avi ├27 5.9 Turbine-上.avi ├28 5.9 Turbine-下.avi ├29 6.1 API Gateway简介.avi ├3.开始使用Spring Cloud实战微服务.avi ├30 6.2 Zuul简介及代码示例.avi ├31 6.3 Zuul指定path+serviceid.avi ├32 6.4 Zuul指定Path+url以及指定可用的服务节点时如何负载均衡.avi ├33 6.5 Zuul使用正则表达式指定路由规则.avi ├34 6.6 Zuul路由的strip-prefix与order.avi ├35 6.7 Zuul的各种姿势.avi ├36 6.8通过Zuul上传文件,禁用Zuul的Filters.avi ├37 6.9 Zuul的回退.avi ├38 6.10 使用Sidecar支持异构平台的微服务.avi ├39 6.10 Sidecar补充.avi ├4 服务提供者与服务消费者.avi ├4 服务提供者与服务消费者new.avi ├40 6.11-1 Zuul过滤器.avi ├41 6.11-2禁用Zuul的过滤器.avi ├42 7.1 Spring Cloud Config简介.avi ├43 7.2 编写Config Server.avi ├44 7.3 编写Config Client.avi ├45 7.4 Git仓库配置详解.avi ├46 7.5配置属性加解密之对称加密.avi ├47 7.6配置属性加解密之非对称加密.avi ├48 7.7 Spring Cloud Config与Eureka.avi ├49 7.8 Spring Cloud Config 与Eureka配合使用.avi ├5 4.1服务发现与服务注册.avi ├50 7.9 Spring Cloud Config配置属性刷新之手动刷新.avi ├51 7.10 Spring Cloud Config配置属性刷新之自动刷新.avi ├52 7.11 Spring Cloud Config配置属性刷新之自动刷新补充.avi ├53 7.12 Config Server的高可用.avi ├6 4.2Eureka简介与Eureka Server上.avi ├7 4.3将微服务注册到Eureka Server上.avi ├8 4.4 Ribbon-1 Ribbon的基本使用.avi ├9 4.5 Ribbon-2通过代码自定义配置ribbon.avi )
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值