将断路器与camel -ThrottlingExceptionRoutePolicy一起使用

时间:2018-01-21 14:32:03

标签: apache-camel jms activemq spring-jms spring-camel

有一条路由正在消耗来自jms队列的消息,并且在进行一些处理之后向不可靠的Web服务发送请求(有时可能会关闭)。 因此,如果服务已关闭,那么我需要停止从队列中消耗一段时间。我尝试使用ThrottlingExceptionRoutePolicy 。它将根据配置停止路由,但问题是当前消息在消息被移动到死信队列时获得错误。我按照代码查看了ThrottlingExceptionRoutePolicy 的代码,这将在为路由完成所有错误处理后调用。 所以我需要修改camel的默认错误处理,以避免在某些特定情况下将消息放入DLQ。我尝试配置由camel提供的各种错误处理程序,但在所有情况下,camel都将消息发送到DLQ。 是否有一些配置或我需要编写自定义错误处理程序来实现相同的目的。

<camel:route id="someroute" routePolicyRef="throttlingExceptionRoutePolicy"
     errorHandlerRef="myTransactionErrorHandlerErrorHandler">
    <camel:from uri="activemq:inputQueue" />
    <camel:transacted />
    <camel:bean ref="afterQueueProcessor" />
    <camel:setHeader headerName="CamelHttpMethod">
        <camel:constant>POST</camel:constant>
    </camel:setHeader>
    <camel:setHeader headerName="Content-Type">
        <camel:constant>application/xyz</camel:constant>
    </camel:setHeader>

    <camel:to
        uri="http://localhost:8080/some-ws/newOrder?orderId=dd&amp;productName=bb&amp;quantity=1" />
</camel:route>

此问题与async communication

有关

0 个答案:

没有答案