当某个端点不可用时(例如500),我的队列文件将被移动到.error目录。我正在使用参数:moveFailed。
<from uri="file:inbox?autoCreate=true&readLockTimeout=2000&charset=utf-8&preMove=.processing&delete=true&moveFailed=.error&maxMessagesPerPoll=50&delay=1000"/>
根据:http://camel.apache.org/file2.html
当将文件移动到“失败”位置时,Camel将处理 错误,不会再次拿起文件。
实施重新传递策略/策略的最佳方法是什么,以便在失败时再次获取文件?
答案 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,并将文件放入队列中以便稍后处理。