有一条路由正在消耗来自 jms 队列的消息,并在进行一些处理后向不可靠的 Web 服务发送请求(有时可能会关闭)。因此,如果服务中断,那么我需要停止从队列中消费一段时间。我尝试使用ThrottlingExceptionRoutePolicy。它将根据配置停止路由,但问题是当前消息在消息被移动到死信队列时收到错误消息。我已经浏览了ThrottlingExceptionRoutePolicy的代码根据代码,这将在为路由完成所有错误处理后调用。所以我需要修改camel的默认错误处理以避免在某些特定情况下将消息发送到DLQ。我尝试配置骆驼提供的各种错误处理程序,但在所有情况下骆驼都将消息发送到 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&productName=bb&quantity=1" />
</camel:route>
这个问题与异步通信有关