gpt4 book ai didi

apache-camel - Apache Camel |自定义错误处理程序以控制每个异常的行为

转载 作者:行者123 更新时间:2023-12-04 04:50:29 25 4
gpt4 key购买 nike

Apache Camel 提供了两种在上下文级别进行错误处理的方法:errorHandleronException

我正在寻找一种能够在一种配置中提供两全其美的解决方案。 我想要的是我应该配置一个错误处理程序(可能是自定义的)并且在该自定义错误处理程序中,我应该能够控制每个异常的行为例如:

if I get IOException, I would make 3 redelivery attempts at an interval of 3 seconds

if I get FileNotFoundException, I would make 5 redelivery attempts at an interval of 10 seconds

errorHandler 将使我能够使用提供的错误处理程序之一,并以类似的方式处理所有异常。例如,使用这种方法我不能对不同的异常进行不同的重新传递尝试。

因此,这里出现了 onException,这相当于 camel 上下文级别的 try-catch。我可以使用它来定义每个异常行为。

我尝试将自定义 bean 与死信 channel 一起使用,以试图控制 bean 的重新传递尝试。但是,Camel 在将控制传递给自定义 bean 之前会尝试重新传递。

关于实现我想要的解决方案的任何想法。


在寻求更清晰的第一组评论后进行编辑:我知道 onException 的这个特性。路由会抛出不同类型的异常。一旦系统上线,新的异常也会随着新的路由/处理器/转换器的开发而添加。如果我使用 onException,那么我(或开发人员)必须指定它们中的每一个。 (我不想使用 onException(Exception.class) 方法。)因此,这将需要向上下文添加更多 onException 子句,将新异常添加到系统中。此外,某些异常可能需要特殊处理。我不想依赖开发人员进行错误处理。所以,我正在寻找基于自定义错误处理程序的通用解决方案。这将帮助我保持配置简单,因为我必须在上下文中仅指定一个错误处理程序。这个错误处理程序可以从 JMX 控制台进行管理,并为我提供了以自定义方式处理任何异常的灵 active 。

最佳答案

您可以使用 onException(Exception.class).onWhen(predicate) 然后使用 java 方法调用作为返回 true 或 false 的谓词。然后,您可以使用 java 代码来触发 onException 是否应该使用react。

查看更多详细信息

关于apache-camel - Apache Camel |自定义错误处理程序以控制每个异常的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23491928/

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