211.7.3. 恢复

LevelDBAggregationRepository 默认恢复任何失败的交换。它通过执行在持久性存储中扫描故障 Exchange 的后台任务来实现此目的。您可以使用 checkInterval 选项设置此任务运行的频率。恢复工作是确保 Camel 尝试恢复和重做失败的交换的事务。任何发现的交换将从持久性存储中恢复,并再次重新提交。

当 Exchange 被恢复/redelivered时,会设置以下标头:

标头类型描述

Exchange.REDELIVERED

布尔值

设置为 true 以指示 Exchange 处于红色状态。

Exchange.REDELIVERY_COUNTER

整数

从 1 开始重新发送尝试。

只有当成功处理 Exchange 时,它才会标记为完成,当 确认 方法在 AggregationRepository 上调用时,才会将其标记为完成。这意味着,如果同一交换再次失败,它将被重试,直到成功为止。

您可以使用选项 maximumRedeliveries 来限制给定恢复的 Exchange 的最大重新传送尝试次数。您还必须设置 deadLetterUri 选项,因此 Camel 知道在点击 的最大值时要发送交换 的位置。

您可以在 camel-leveldb 的单元测试中看到一些示例,例如: https://svn.apache.org/repos/asf/camel/trunk/components/camel-leveldb/src/test/java/org/apache/camel/component/leveldb/LevelDBAggregateRecoverTest.java

211.7.3.1. 在 Java DSL 中使用 LevelDBAggregationRepository

在这个示例中,我们希望在 target/data/leveldb.dat 文件中持续聚合的信息。