213.8. LevelDB
从 Camel 2.10 开始提供
leveldb 是一个轻量级且可嵌入的键值数据库。它允许与 Camel 结合使用,为各种 Camel 功能(如聚合器)提供持久支持。
它提供的当前功能:
- LevelDBAggregationRepository
213.8.1. 使用 LevelDBAggregationRepository
LevelDBAggregationRepository
是一个 聚合存储库
,实时保留聚合的消息。这样可确保您不会松散消息,因为默认聚合器将使用仅在内存中的 AggregationRepository
。
它有以下选项:
选项 | 类型 | 描述 |
---|---|---|
| 字符串 |
必需的仓库名称。允许您将共享级别DB |
| 字符串 | 持久性存储的文件名。如果启动文件时不存在任何文件,则创建新文件。 |
| LevelDBFile |
使用现有的 |
| 布尔值 | Camel 2.12: LevelDBFile 是否应在写入时同步。默认值为 false。通过同步写入,可以确保始终等待所有写入假脱机到磁盘,因此不会造成松散更新。有关 async 与同步写入的详情,请参阅 LevelDB 文档。 |
| 布尔值 |
get 操作是否应该返回旧的现有 Exchange (如果存在)。默认情况下,此选项为 |
| 布尔值 |
是否启用恢复。此选项默认为 |
| long | 如果启用了恢复,则每次 x 次运行后台任务,以扫描失败的交换以恢复并重新提交。默认情况下,这个间隔为 5000 millis。 |
| int |
允许您限制恢复的交换的最大重新发送尝试次数。如果启用,如果所有重新发送尝试都失败,则交换将移到死信频道。默认情况下禁用这个选项。如果使用这个选项,则必须提供 |
| 字符串 |
一个死信频道的端点 uri,将移动耗尽恢复的交换。如果使用这个选项,则必须提供 |
必须提供 repositoryName
选项。然后,必须提供 persistentFileName
或 levelDBFile
。
213.8.2. 持久性时保留的内容
LevelDBAggregationRepository
将仅保留任何 Serializable
兼容消息正文数据类型。消息标头必须是原语 / 字符串 / 等。如果数据类型不是这样一个类型,则会丢弃它,并记录 WARN
。它只会保留消息正文和
标头。Message
Exchange
属性 不会被保留。
213.8.3. 恢复
LevelDBAggregationRepository
默认恢复任何失败的 Exchange。它通过在持久性存储中扫描失败的交换的后台任务来实现此目的。您可以使用 checkInterval
选项设置此任务运行的频率。恢复充当事务处理,可确保 Camel 会尝试恢复并恢复失败的交换。发现恢复的所有交换都将从持久存储恢复并重新提交并再次发送出。
当交换被恢复/冗余时,会设置以下标头:
标头 | 类型 | 描述 |
---|---|---|
| 布尔值 | 设置为 true,表示 Exchange 正在重新设计。 |
| 整数 | 从 1 开始重新发送尝试。 |
只有在成功处理交换时,才会将其标记为 complete,只有在 AggregationRepository
上调用 confirm
方法时才会发生这种情况。这意味着,如果同一交换再次失败,它将被重试,直到成功为止。
您可以使用选项 maximumRedeliveries
来限制给定恢复的交换的最大重新发送尝试次数。您还必须设置 deadLetterUri
选项,以便 Camel 知道在 max Redeliveries
正在命中时要发送交换的位置。
您可以在 camel-leveldb 的单元测试中看到一些示例,例如 此测试。
213.8.3.1. 在 Java DSL 中使用 LevelDBAggregationRepository
在本例中,我们希望在 target/data/leveldb.dat
文件中持久保留聚合的消息。
213.8.3.2. 在 Spring XML 中使用 LevelDBAggregationRepository
同一示例,但使用 Spring XML:
213.8.4. 依赖项
要在 camel 路由中使用 LevelDB,您需要添加对 camel-leveldb 的依赖。
如果您使用 maven,您只需在 pom.xml 中添加以下内容,替换最新和最佳发行版本的版本号(请参阅最新版本的下载页面)。
<dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-leveldb</artifactId> <version>2.10.0</version> </dependency>
213.8.5. 另请参阅
- 配置 Camel
- 组件
- 端点
- 开始使用
- 聚合器
- HawtDB
- 组件