欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

详解spring cloud使用Hystrix实现单个方法的fallback

程序员文章站 2023-11-26 20:54:40
本文介绍了spring cloud-使用hystrix实现单个方法的fallback,分享给大家,具体如下: 一、加入hystrix依赖

本文介绍了spring cloud-使用hystrix实现单个方法的fallback,分享给大家,具体如下:

一、加入hystrix依赖

<dependency> 
      <groupid>org.springframework.cloud</groupid> 
      <artifactid>spring-cloud-starter-hystrix</artifactid> 
    </dependency> 

二、编写controller

package com.chhliu.springboot.restful.controller;  
import org.springframework.beans.factory.annotation.autowired; 
import org.springframework.web.bind.annotation.getmapping; 
import org.springframework.web.bind.annotation.pathvariable; 
import org.springframework.web.bind.annotation.restcontroller;  
import com.chhliu.springboot.restful.feignclient.userfeignclient; 
import com.chhliu.springboot.restful.vo.user; 
import com.netflix.hystrix.contrib.javanica.annotation.hystrixcommand;  
@restcontroller 
public class resttemplatecontrollerhystrixcommand { 
   
  @autowired 
  private userfeignclient client; // 使用feign来消费restful服务 
   
  @getmapping("/get/{id}") 
  @hystrixcommand(fallbackmethod="findbyidfallback")// 使用hystrixcommand注解,在fallbackmethod属性中指定fallback的方法 
  public user findbyid(@pathvariable long id) { 
    return client.findbyid(id); 
  } 
   
    // 覆写fallbackmethod中指定的方法,注意,此方法的返回值,参数必须与原方法一致 
  public user findbyidfallback(long id){ 
    user u = new user(); 
    u.setname("zhangsan"); 
    u.setusername("chhliu"); 
    u.setid(9l); 
    return u; 
  } 
} 

三、在启动类中添加hystrix支持

@enablecircuitbreaker 

四、添加配置文件

server.port:7904 
# spring boot服务注册到eureka server上的应用名称 
spring.application.name=springboot-rest-template-feign-hystrix 
eureka.instance.prefer-ip-address=true 
# eureka server注册服务的地址 
eureka.client.service-url.defaultzone=http://chhliu:chhliu123456@localhost:8764/eureka 
springboot-h2.ribbon.nfloadbalancerruleclassname=com.netflix.loadbalancer.retryrule 
hystrix.command.default.execution.isolation.thread.timeoutinmilliseconds: 1 #为了测试hystrix的fallback效果,此处将超时时间设置成1毫秒 

五、测试

在浏览器中输入:http://localhost:7904/get/2

测试结果如下:

{"id":9,"username":"chhliu","name":"zhangsan","age":null,"balance":null} 

从上面的测试结果可以看出,由于连接超时,直接进入了fallback方法。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。