Я хотел бы реализовать маршрут Apache Camel с повторной попыткой и автоматическим выключателем Hystrix. Мой маршрут выглядит так:
<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>
Когда конечная точка верблюда http4 вызывается внутри командного потока Hystrix, 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)
Кто-нибудь знает, почему это происходит? Могу ли я объединить оба, не разделяя маршрут?