当前位置: 首页 > 知识库问答 >
问题:

如何正确处理Hystrix回退中的预期错误?

解高昂
2023-03-14

我们有一个Hystrix(1.4.x)命令如下所示(使用Spring):

@HystrixCommand(groupKey = "GroupKey", commandKey = "CommandKey", fallbackMethod = "myFallback")
public List<X> findXs(long xId) {
   return externalService.findXsExternally(xId);
}

实际上,我们不想从回退方法返回(空的)列表,而是抛出一个异常,以便findxs的调用方知道ExternalService已关闭,并可以相应地执行操作。但同时我们希望利用Hystrix提供的功能。

在我们的例子中,我们希望调用方返回一个错误消息,而不是返回一个列表。在Spring中实现了一个后退,如下所示:

public List<X> myFallback(long xId) {
    // What to do?? Throw exception!?  
}

myfallback引发异常“有效”,但Hystrix将警告我们:

CommandKey失败,回退失败。

共有1个答案

拓拔君博
2023-03-14

如果您不想使用它,为什么还要设置回退呢?Hystrix不需要您设置一个。当您宁愿从缓存返回过时数据而不愿抛出异常时,就会使用回退。这两个病例都被认为是Hyprix的失败。如果要从fallback方法抛出一个异常,那么只会使Hystrix感到困惑,因为Hystrix会认为除了服务本身之外,您的fallback也有错误。如果不提供回退,Hystrix应该抛出一个HystrixBadRequestException,包装从findXs方法抛出的异常

 类似资料:
  • 我正在尝试使用Netflix Hystrix Fallbackmethod&使用一个简单的spring程序。我遵循了一些教程中描述的所有基本步骤,但仍然会出错, 有没有人知道缺少了什么配置?下面是代码片段。 我的主要,

  • 在 node.js中,通常的做法是将错误消息作为回调函数的第一个参数返回。在纯JS中有许多解决方案(promise,步骤,seq等),但它们似乎都无法与ICS集成。在不损失太多可读性的情况下处理错误的正确解决方案是什么? 例如:

  • 问题内容: Java的I / O类,,,和他们的不同子类中都有一个可抛出的方法。 对于处理此类异常的正确方法是否存在共识? 我经常看到建议,只是默默地忽略它们,但这是错误的,至少在打开用于写的资源的情况下,关闭文件时出现问题可能意味着无法写入/发送未刷新的数据。 另一方面,在阅读资源时,我还不清楚为什么会抛出异常以及如何处理。 那么有什么标准建议吗? 问题答案: 记录下来。 您实际上不能 做任何事

  • 在我的REST API中,我有一个过滤器,该过滤器检查每个请求,以查看令牌是否是原样。下面是代码。 当用户登录到应用程序时,将调用上述代码。但是,令牌将在60分钟内过期。我知道,在令牌过期后,要么我必须带用户返回登录屏幕,要么刷新令牌。我把这里和这里的建议都看了一遍 但我不明白以下几点。 如何分配并将此令牌发送回用户?当前,当用户登录时,他将获得令牌并将其保存在一个变量中。为了使刷新的令牌工作,我

  • 我们通过直接扩展HystrixCommand类来使用Hystrix功能。但是对于某些业务异常,Hystrix的回退方法会被触发。 我不想为某些特定于业务的异常触发Hystrix回退。我如何能够实现它没有注解的基础?