【问题标题】:Hystrix with Spring IntegrationHystrix 与 Spring 集成
【发布时间】:2018-01-10 20:04:42
【问题描述】:

我想看看在我的新项目中使用 Spring Integration 的可行性。这是一个基于微服务的项目,有一个中心组件,我想在其中放置 Spring 集成组件,该组件本质上充当一个编排组件,它将编排对所有外部微服务的调用。 当前的问题是我正在尝试,但我还不能让 Spring Cloud hystrix 断路器与 Spring 集成一起工作。我也尝试过java dsl,但目前我一无所知。我真的很想将 hystrix 用于断路器,以便我也可以在项目中使用 hystrix 仪表板。 任何帮助或一个小例子都会有帮助

【问题讨论】:

  • 有什么问题?什么是堆栈跟踪?
  • 请您提供任何样品,以确定您在哪里?

标签: spring spring-integration hystrix


【解决方案1】:

好吧,如果故事是关于断路器的,你应该考虑为那个 Hystrix 命令实现AbstractRequestHandlerAdviceDocs 关于此事。

您可以从现有的RequestHandlerCircuitBreakerAdvice 中借鉴一些想法。关于此事的sample

我认为fallbackMethod 的功能可以作为ExpressionEvaluatingRequestHandlerAdvice 与其failureChanneltrapExceptiontrueRequestHandlerCircuitBreakerAdvice 的组合作为链中的下一个。这样,您所有下游的异常都将被ExpressionEvaluatingRequestHandlerAdvice 捕获并发送到我们可以将其视为Hystrix 术语中的fallbackMethod 的通道。

【讨论】:

  • 谢谢。我会试试的。虽然我不确定我是否真的了解如何实现回退方法。您能否再解释一下,还有没有办法实现缓存的功能?
  • 关于缓存:github.com/spring-projects/spring-integration/pull/2105。 Spring Integration 中没有method 表示法,但有MessageChannel。所以,就 Spring Integration 而言,应该是fallbackChannel。但是由于ExpressionEvaluatingRequestHandlerAdvice 已经提供了failureChannel,因此只需在RequestHandlerCircuitBreakerAdvice 之前将此建议添加到链中即可。你觉得这有意义吗?
  • 谢谢。我想我明白了。但如果我没记错的话,这就是spring集成方式。我很想在项目中实现带有spring集成的hystrix。主要原因是我想使用 hystrix 仪表板可能与涡轮机一起监视应用程序。有没有一种干净的方法可以实现这一目标?
  • 就像我说的,你需要看看实现AbstractRequestHandlerAdvice去历史命令的方式。没有其他方法可以挂钩 Spring Integration 端点。当然,您可以考虑使用 @HystrixCommand 标记服务方法,就像我们使用 @Transactional@ServiceActivator 一样
【解决方案2】:

按照 Artem Bilan 回答的线程,使用带有 ExpressionEvaluatingRequestHandlerAdvice 和 RequestHandlerCircuitBreakerAdvice 的建议链,并配置一个 fallbackChannel,这会收到一条没有回复通道的消息,需要将预定义的消息回退给用户。如何正确设置 fallbackChannel。

【讨论】:

    猜你喜欢
    • 2017-05-04
    • 2017-09-10
    • 2019-04-26
    • 2017-03-06
    • 1970-01-01
    • 2016-12-08
    • 2018-08-14
    • 1970-01-01
    • 2023-03-31
    相关资源
    最近更新 更多