有一条路由正在消耗来自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有关