326.14. 使用基于 JDBC 的聚合存储库


从 Camel 2.6 开始提供

INFO:在 Camel 2.6 中使用 JdbcAggregationRepository

在 Camel 2.6 中,camel-jdbc-aggregator 组件提供了 JdbcAggregationRepository。从 Camel 2.7 开始,J dbcAggregationRepositorycamel-sql 组件中提供。

Jdbc AggregationRepository 是一个聚合的Repository,它即时保留聚合的消息。这样可确保您不会松散消息,因为默认聚合器将仅使用内存 AggregationRepositoryJdbcAggregationRepository 允许与 Camel 一起为聚合器提供持久的支持。

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

您可以使用选项 maximumRedeliveries 来限制给定恢复交换的最大重新发送尝试次数。您还必须设置 deadLetterUri 选项,以便 Camel 知道在 maximumRedeliveries 命中时发送交换的位置。

您可以在 camel-sql 的单元测试中看到一些示例,例如 这个测试

326.14.1. 数据库

要正常运行,每个聚合器使用两个表:聚合并完成一个。按照惯例,完成的名称与带有 "_COMPLETED" 后缀的聚合名称相同。名称必须在带有 RepositoryName 属性的 Spring bean 中进行配置。在以下示例中,将使用聚合。

两个表的表结构定义相同:如果一个 String 值都用作键(id),而 Blob 包含字节阵列中的交换序列化。
但是,应该记住一个区别: id 字段没有相同的内容,具体取决于表。
在聚合表 id 中,包含组件用来聚合消息的关联 Id。在完成的表中,id 保存在对应的 blob 字段中存储的交换的 id。

以下是用于创建表的 SQL 查询,只需将 "aggregation" 替换为您的聚合器存储库名称。

CREATE TABLE aggregation (
 id varchar(255) NOT NULL,
 exchange blob NOT NULL,
 constraint aggregation_pk PRIMARY KEY (id)
);
CREATE TABLE aggregation_completed (
 id varchar(255) NOT NULL,
 exchange blob NOT NULL,
 constraint aggregation_completed_pk PRIMARY KEY (id)
);
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.