此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring Integration 6.5.1! |
JDBC 元数据存储
5.0 版引入了 JDBCMetadataStore
(请参阅元数据存储)实现。您可以使用JdbcMetadataStore
以在应用程序重启时维护元数据状态。 这MetadataStore
实现可以与以下适配器一起使用:
要将这些适配器配置为使用JdbcMetadataStore
,使用 bean 名称metadataStore
. Feed 入站通道适配器和 Feed 入站通道适配器都会自动选取并使用声明的JdbcMetadataStore
,如以下示例所示:
@Bean
public MetadataStore metadataStore(DataSource dataSource) {
return new JdbcMetadataStore(dataSource);
}
这org.springframework.integration.jdbc
package 包含多个 RDMBS 提供商的数据库模式脚本。例如,以下列表显示了元数据表的 H2 DDL:
CREATE TABLE INT_METADATA_STORE (
METADATA_KEY VARCHAR(255) NOT NULL,
METADATA_VALUE VARCHAR(4000),
REGION VARCHAR(100) NOT NULL,
constraint INT_METADATA_STORE_PK primary key (METADATA_KEY, REGION)
);
您可以更改INT_
前缀以匹配目标数据库设计要求。您还可以配置JdbcMetadataStore
以使用自定义前缀。
这JdbcMetadataStore
实现ConcurrentMetadataStore
,使其在多个应用程序实例之间可靠地共享,其中只有一个实例可以存储或修改键的值。所有这些作都是原子的,这要归功于事务保证。
事务管理必须使用JdbcMetadataStore
. 入站通道适配器可以提供对TransactionManager
在轮询器配置中。与非事务性不同MetadataStore
实现,使用JdbcMetadataStore
,则该条目仅在事务提交后才出现在目标表中。发生回滚时,不会将任何条目添加到INT_METADATA_STORE
桌子。
从 5.0.7 版本开始,您可以配置JdbcMetadataStore
使用 RDBMS 提供商特定的lockHint
选项,用于对元数据存储条目进行基于锁的查询。默认情况下,它是FOR UPDATE
如果目标数据库不支持行锁定功能,则可以使用空字符串进行配置。请咨询您的提供商,了解SELECT
用于在更新前锁定行的表达式。