Apache Camel:文件组件moveFailed重新传递策略

时间:2017-11-14 10:08:24

标签: apache apache-camel

当某个端点不可用时(例如500),我的队列文件将被移动到.error目录。我正在使用参数:moveFailed。

<from uri="file:inbox?autoCreate=true&amp;readLockTimeout=2000&amp;charset=utf-8&amp;preMove=.processing&amp;delete=true&amp;moveFailed=.error&amp;maxMessagesPerPoll=50&amp;delay=1000"/>

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

  

当将文件移动到“失败”位置时,Camel将处理   错误,不会再次拿起文件。

实施重新传递策略/策略的最佳方法是什么,以便在失败时再次获取文件?

1 个答案:

答案 0 :(得分:3)

通过重新传递到某个端点组件而不是整个路径来设置重试。

如果您希望使用error handler,可以通过指定重试次数,重试之间的延迟和退避乘数来实现此目的。

onException(RestException.class)
            .maximumRedeliveries(3)
            .redeliveryDelay(100L)
            .backOffMultiplier(1.5)

或者在骆驼环境中设置它:

<errorHandler id="errorhandler" redeliveryPolicyRef="redeliveryPolicy"/>
<redeliveryPolicyProfile id="redeliveryPolicy" maximumRedeliveries="3" redeliveryDelay="100" backOffMultiplier="1.5" retryAttemptedLogLevel="WARN"/>

这样,文件只有在用完了重新传递尝试后才会传递到错误文件夹。

您还可以查看使用dead letter handler,并将文件放入队列中以便稍后处理。