此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Integration 6.4.3! |
JDBC 元数据存储
版本 5.0 引入了 JDBCMetadataStore
(请参阅 元数据存储) 实现。
您可以使用JdbcMetadataStore
在应用程序重启时保持元数据状态。
这MetadataStore
implementation 可以与适配器一起使用,例如:
要将这些适配器配置为使用JdbcMetadataStore
中,使用 Bean 名称metadataStore
.
Feed 入站通道适配器和 Feed 入站通道适配器都会自动获取并使用声明的JdbcMetadataStore
,如下例所示:
@Bean
public MetadataStore metadataStore(DataSource dataSource) {
return new JdbcMetadataStore(dataSource);
}
这org.springframework.integration.jdbc
包包含多个 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
在 Poller 配置中。
与非事务性MetadataStore
implementations, 使用JdbcMetadataStore
,则只有在事务提交后,该条目才会显示在目标表中。
发生回滚时,不会向INT_METADATA_STORE
桌子。
从版本 5.0.7 开始,您可以配置JdbcMetadataStore
使用 RDBMS 供应商特定的lockHint
对元数据存储条目进行基于锁的查询的选项。
默认情况下,它是FOR UPDATE
如果目标数据库不支持行锁定功能,则可以使用空字符串进行配置。
请咨询您的供应商,以获取SELECT
expression 在更新之前锁定行。