gpt4 book ai didi

java - 如何在 Apache Camel 中结合 Redelivery 策略和 Hystrix 断路器?

转载 作者:行者123 更新时间:2023-12-03 18:36:05 27 4
gpt4 key购买 nike

我想通过重试和 Hystrix 断路器实现 Apache Camel 路由。我的路线如下所示:

<route>
......
<onException>
<exception>java.lang.Exception</exception>
<redeliveryPolicy redeliveryDelay="150" maximumRedeliveries="3" logRetryAttempted="true" retryAttemptedLogLevel="WARN"/>
</onException>
<hystrix>
<hystrixConfiguration id="MyServiceHystrix" />
<to uri="{{my.service.endpoint}}?bridgeEndpoint=true"/>
</hystrix>
</route>

当在 Hystrix 命令线程 中调用 camel http4 端点时,CamelInternalProcessor 不会调用 RedeliveryErrorHandler 并且不会重试。基本上堆栈跟踪尊重是:

at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:542)
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:197)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:120)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:83)
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:197)
at org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:62)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:120)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:83)

有人知道为什么会这样吗?我可以在不拆分路线的情况下将两者结合起来吗?

最佳答案

这可能有助于其他人设计重试逻辑。

Camel 有 .circuitBreaker().inheritErrorHandler(true) 但这不再起作用了。 ( https://camel.apache.org/manual/latest/hystrix-eip.html ),.loadbalancer().circuitBreaker() 也已弃用。粘贴代码库。

/** @deprecated */
@Deprecated
public LoadBalanceDefinition circuitBreaker(int threshold, long halfOpenAfter, Class<?>... exceptions)

但是,我们可以在下面添加一行以在出现异常时重试。

onException(Exception.class)
.maximumRedeliveries(5) //No of times
.redeliveryDelay(1000); //Delay between retries in ms.

在上面的示例中,它将重试所有异常,但是,我们可以通过将 Exception.class 替换为您的程序所针对的对象(如 NullPointerException.class 或 MyCustomException.class

更新:完全错过了您的问题。我几乎用 Java DSL 写下了您使用 XML 所做的事情。忽略!!

关于java - 如何在 Apache Camel 中结合 Redelivery 策略和 Hystrix 断路器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42985596/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com