错误处理程序继续运行

时间:2016-05-11 10:31:50

标签: apache-camel


我正在尝试设计一个错误处理程序,它执行3次重新传递尝试,然后停止尝试。这是我的camel-context.xml:

<errorHandler id="logginghandler" type="DefaultErrorHandler">
  <redeliveryPolicy maximumRedeliveries="3" redeliveryDelay="5000"
retryAttemptedLogLevel="ERROR" />
</errorHandler>

  <route>
    <from uri="file:/home/user/files/in"/>
    <bean ref="mybean" method="doSomething"/>
    <to uri="jms:queue:myqueue"/>
  </route>
</camelContext>

当我执行Route时,Handler会不断尝试重新传递消息:

[ile:///home/user/files/in] DefaultErrorHandler            ERROR Failed delivery for (MessageId: ID-localhost-localdomain-47568-1462962389320-0-5 on ExchangeId: ID-localhost-localdomain-47568-1462962389320-0-6). On delivery attempt: 2 caught: java.lang.RuntimeException: Errore!
[ile:///home/user/files/in] DefaultErrorHandler            ERROR Failed delivery for (MessageId: ID-localhost-localdomain-47568-1462962389320-0-5 on ExchangeId: ID-localhost-localdomain-47568-1462962389320-0-6). On delivery attempt: 3 caught: java.lang.RuntimeException: Errore!
[ile:///home/user/files/in] DefaultErrorHandler            ERROR Failed 
[ile:///home/user/files/in] GenericFileOnCompletion        WARN  Rollback file strategy: org.apache.camel.component.file.strategy.GenericFileRenameProcessStrategy@52f47672 for file: GenericFile[/home/user/files/in/wrong.txt]
[ile:///home/user/files/in] DefaultErrorHandler            ERROR Failed delivery for (MessageId: ID-localhost-localdomain-47568-1462962389320-0-5 on ExchangeId: ID-localhost-localdomain-47568-1462962389320-0-6). On delivery attempt: 2 caught: java.lang.RuntimeException: Errore!
[ile:///home/user/files/in] DefaultErrorHandler            ERROR Failed delivery for (MessageId: ID-localhost-localdomain-47568-1462962389320-0-5 on ExchangeId: ID-localhost-localdomain-47568-1462962389320-0-6). On delivery attempt: 3 caught: java.lang.RuntimeException: Errore!

知道我缺少什么吗?

1 个答案:

答案 0 :(得分:1)

您有一个文件端点,因此代码会回滚您的文件,然后重新读取该文件。您可以尝试设置:noop = true(如果为true,则不会以任何方式移动或删除文件。此选项适用于只读数据)。这可能会解决您的问题。您可能想要设置的另一个选项是:moveFailed这将允许您在处理无法按预期工作时指定错误目录。

http://camel.apache.org/file2.html