Apache camel Camel onException重新交付澄清

Apache camel Camel onException重新交付澄清,apache-camel,Apache Camel,所以我有点不确定这将如何工作。我有一个“断管”的例外,不时发生。根据日志,它会触发2个异常被抛出:org.apache.camel.component.file.GenericFileOperationFailedException由于文件无法到达其端点,而java.net.SocketException因为这是文件无法到达端点的根本原因 为了解决这个问题,我有一个块,看起来像这样: <onException> <exception>org.apache.

所以我有点不确定这将如何工作。我有一个“断管”的例外,不时发生。根据日志,它会触发2个异常被抛出:
org.apache.camel.component.file.GenericFileOperationFailedException
由于文件无法到达其端点,而
java.net.SocketException
因为这是文件无法到达端点的根本原因

为了解决这个问题,我有一个
块,看起来像这样:

<onException>
        <exception>org.apache.camel.component.file.GenericFileOperationFailedException</exception>
        <exception>java.net.SocketException</exception>
        <redeliveryPolicy maximumRedeliveries="2" redeliveryDelay="5000"/>
</onException>

org.apache.camel.component.file.GenericFileOperationFailedException
java.net.SocketException
因此,据我所知,Camel应该选择
genericfileoperationfailedeexception
,然后尝试执行两次重新交付,间隔5000毫秒

那么,如果在这两次尝试中都无法重新传递,Camel会因为抛出的错误的性质而选择
SocketException


这意味着Camel将尝试总共4次重新交付,总共需要20000毫秒?

Camel将根据您编写它们的顺序进行初始选择。“。配置OneException的顺序优先。Camel将从第一个…最后一个定义开始测试。”

直接从文档中:

因此,如果使用此层次结构引发异常: +RuntimeCamelException(通过Camel的包装异常)+OrderFailedException +IOException +FileNotFoundException

然后,Camel将按以下顺序尝试测试异常: FileNotFoundException、IOException、OrderFailedException和 运行时异常。正如我们所定义的 OneException(IOException.class)Camel将选择它,因为它是 最接近的匹配

基于这个例子,我假设

SocketException


将被触发并开始重新交付,因为它有一个精确的匹配项,并且它位于stacktrace中较低的位置,Camel从中开始查找匹配项。

哦,我现在知道了。你知道我的错误会不会触发OneException块一次或两次吗?我想会触发一次。