我正在尝试设计一个错误处理程序,它执行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!
知道我缺少什么吗?
答案 0 :(得分:1)
您有一个文件端点,因此代码会回滚您的文件,然后重新读取该文件。您可以尝试设置:noop = true(如果为true,则不会以任何方式移动或删除文件。此选项适用于只读数据)。这可能会解决您的问题。您可能想要设置的另一个选项是:moveFailed这将允许您在处理无法按预期工作时指定错误目录。