Spring Cloud Hystrix异常处理方法详解

 更新时间:2020年01月16日 14:33:54   作者:盲目的拾荒者  
这篇文章主要介绍了Spring Cloud Hystrix异常处理方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

这篇文章主要介绍了Spring Cloud Hystrix异常处理方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

在调用服务执行HsytrixCommand实现的run()方法抛出异常时,除HystrixBadRequestException之外,其他异常都会认为是Hystrix命令执行失败并触发服务降级处理逻辑.

异常处理

当Hystrix命令因为异常(除了HystrixBadRequestException异常)进入服务降级逻辑之后,往往需要对不同的异常做针对处理,那么就要捕获异常。对于使用@HystrixCommand注解只需要在降级函数中增加Throwable e对象的定义

/**
* HystrixBadRequestException:
* 与由HystrixCommand抛出的所有其他异常不同,这不会触发回退,也不会对失败度量进行计数,因此不会触发断路器。
* @return
*/
@HystrixCommand(fallbackMethod="helloBackMethodFirst",ignoreExceptions=HystrixBadRequestException.class)
public String helloService() {
logger.info("start invoke service");
//URI需要使用虚拟主机名(即服务名称,而不是主机名)
//return restTemplate.getForEntity("http://service-provide/hello", String.class).getBody();
throw new RuntimeException("consumer exception");
}
/**
* 通用降级函数
* @return
*/
@HystrixCommand(fallbackMethod="helloBackMethodSecond")
public String helloBackMethodFirst(Throwable e){
/*
* 一些异常判断
* if(e instanceof CheckEception){
* }
* if(e instanceof IllegalStateException){
* }
*/
//此处可能是另外一个网络请求,所以也可能出现错误
return "error1:"+e.getMessage();
}

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

相关文章

  • Java CompletableFuture使用方式

    Java CompletableFuture使用方式

    这篇文章主要介绍了Java CompletableFuture使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • Java IText异常NoClassDefFoundError: org/bouncycastle/asn1/ASN1Encodable的解决方法

    Java IText异常NoClassDefFoundError: org/bouncycastle

    在使用Java进行PDF文档操作时,iText是一个非常强大的库,然而,在实际开发过程中,可能会遇到一些异常情况,其中之一就是​​NoClassDefFoundError: org/bouncycastle/asn1/ASN1Encodable​​,本文将探讨这个错误的原因及其解决方案,需要的朋友可以参考下
    2025-02-02
  • MyBatis-Plus分页时排序的实现方法

    MyBatis-Plus分页时排序的实现方法

    这篇文章主要介绍了MyBatis-Plus分页时的排序,分页时排序的方法,后端OrderItems排序、Wrapper排序前端指定排序,文章结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-03-03
  • SpringBoot HttpMessageConverter消息转换器的使用详解

    SpringBoot HttpMessageConverter消息转换器的使用详解

    在整个数据流转过程中,前端的请求报文转化为Java对象,Java对象转化为响应报文,这里就用到了消息转换器HttpMessageConverter
    2022-06-06
  • SpringBoot集成MyBatis对管理员的查询操作

    SpringBoot集成MyBatis对管理员的查询操作

    本文主要介绍了SpringBoot集成MyBatis对管理员的查询操作,实现增删改查中的查询操作,对所有的普通管理员进行查询操作,感兴趣的可以了解一下
    2023-11-11
  • SpringBoot异常: nested exception is java.lang.NoClassDefFoundError: javax/servlet/ServletContext解决方案

    SpringBoot异常: nested exception is java.lang.NoClassDefFoundE

    这篇文章主要介绍了SpringBoot异常: nested exception is java.lang.NoClassDefFoundError: javax/servlet/ServletContext解决方案,说明了错误原因和解决方案,需要的朋友可以参考下
    2021-06-06
  • spring boot linux启动方式详解

    spring boot linux启动方式详解

    这篇文章主要介绍了spring boot linux启动方式详解,分为为前台启动,后台启动和脚本启动的各种方式讲解,需要的朋友可以参考下
    2017-11-11
  • 关于java自定义线程池的原理与实现

    关于java自定义线程池的原理与实现

    本文介绍了如何自定义线程池和阻塞队列,包括阻塞队列的实现方法,线程池的构建以及拒绝策略的应用,详细阐述了线程池中任务的提交和执行流程,以及如何处理任务超出队列容量的情况
    2022-04-04
  • Spring Data JPA 关键字Exists的用法说明

    Spring Data JPA 关键字Exists的用法说明

    这篇文章主要介绍了Spring Data JPA 关键字Exists的用法说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • Java 如何使用Velocity引擎生成代码

    Java 如何使用Velocity引擎生成代码

    代码生成器,可以有效减少编写重复代码,快速实现简单的业务逻辑,也能让我们的代码保持一致。那目前,我们看到的代码生成器,大部分是基于velocity引擎模板生成的,接下来我们就学习一下如何实现代码生成器。
    2021-06-06

最新评论