如何正确处理Hystrix后备广告中的预期错误?

约翰

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

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

实际上,我们不希望List从fallback方法返回一个(空),而是抛出一个异常,以便我们的调用者findXs知道the externalServicedown并可以采取相应的措施。但是同时,我们想利用Hystrix提供的功能。

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

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

myFallback“作品”中抛出异常,但Hystrix将警告我们:

CommandKey失败,回退失败。

即它将解释为回退失败。在我们的情况下,异常应被解释为后备失败而是预期的行为。我们还尝试了将抛出的异常包装在中,HystrixBadRequestException但它似乎不适用于后备(根据文档,该方法适用于“运行”方法)。

如何在Hystrix中实现抛出异常的后备方法我们可以安全地忽略警告吗,还是Hystrix并非以这种方式设计的?

卫生

如果不想使用后备,为什么还要设置后备呢?Hystrix不需要您设置一个。当您宁愿从缓存中返回陈旧数据(而不是引发异常)时,可以使用后备。两种情况均视为Hystrix的失败。如果要从fallback方法中引发异常,则只会混淆Hystrix,Hystrix会认为您的fallback除了服务本身之外还存在错误。如果您不提供后备广告,则Hystrix应该引发HystrixBadRequestException,包装从findXs方法引发的异常。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何正确处理 VBA 中的 FollowHyperlink 错误?

来自分类Dev

如何正确处理请求承诺错误?

来自分类Dev

如何正确处理python错误

来自分类Dev

Firebase函数如何正确处理错误

来自分类Dev

如何使用Promise正确处理express.js中的错误(字符串或对象)

来自分类Dev

如何正确处理ASP.NET Core MVC中的AJAX错误?

来自分类Dev

如何正确处理来自Rust中maxminddb :: geoip2的AddressNotFound错误?

来自分类Dev

Spark-如何正确处理RDD.map()方法中的错误情况?

来自分类Dev

如何正确处理服务器端错误?

来自分类Dev

如何在Laravel中正确处理错误?

来自分类Dev

如何正确处理多个运行时错误?

来自分类Dev

如何确保此函数正确处理错误?

来自分类Dev

如何正确处理httpClient?

来自分类Dev

如何正确处理scanf()

来自分类Dev

如何正确处理并发?

来自分类Dev

如何正确处理导航

来自分类Dev

如何正确处理打字稿中的promisifyAll?

来自分类Dev

如何正确处理python中的可选功能

来自分类Dev

如何正确处理卵石中的APP_MSG_BUSY?

来自分类Dev

如何正确处理RDBMS中的更新/删除操作?

来自分类Dev

如何正确处理嵌套片段中的MaskedWallet响应

来自分类Dev

您如何正确处理数组中的哈希?

来自分类Dev

如何正确处理NSTextField中的<Return> +修饰键?

来自分类Dev

如何正确处理过程宏中的跨度?

来自分类Dev

如何正确处理打字稿中的范围

来自分类Dev

如何正确处理ZeroMQ.js中的连接超时?

来自分类Dev

如何正确处理Python中的浮点运算?

来自分类Dev

如何正确处理PL SQL中的触发器?

来自分类Dev

如何确定Outlook中的ContactItem是否显示(正确处理)

Related 相关文章

热门标签

归档