JDBC 元数据存储

版本 5.0 引入了 JDBC(请参阅元数据存储)实现。 您可以使用 在应用程序重启后维护元数据状态。 此实现可与适配器一起使用,例如:MetadataStoreJdbcMetadataStoreMetadataStorespring-doc.cn

要将这些适配器配置为使用 ,请使用 Bean 名称 声明 Spring Bean。 Feed 入站通道适配器和 Feed 入站通道适配器都会自动选取并使用 declared ,如下例所示:JdbcMetadataStoremetadataStoreJdbcMetadataStorespring-doc.cn

@Bean
public MetadataStore metadataStore(DataSource dataSource) {
    return new JdbcMetadataStore(dataSource);
}

该软件包包含多个 RDMBS 供应商的数据库架构脚本。 例如,下面的清单显示了元数据表的 H2 DDL:org.springframework.integration.jdbcspring-doc.cn

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_JdbcMetadataStorespring-doc.cn

实现 ,使其在多个应用程序实例之间可靠地共享,其中只有一个实例可以存储或修改键的值。 由于交易保证,所有这些操作都是原子的。JdbcMetadataStoreConcurrentMetadataStorespring-doc.cn

事务管理必须使用 . 入站通道适配器可以在 poller 配置中提供对 的引用。 与非事务性实现不同,使用 时,该条目仅在事务提交后才会出现在目标表中。 发生回滚时,不会向表中添加任何条目。JdbcMetadataStoreTransactionManagerMetadataStoreJdbcMetadataStoreINT_METADATA_STOREspring-doc.cn

从版本 5.0.7 开始,您可以使用 RDBMS 供应商特定的选项配置元数据存储条目的基于锁的查询。 默认情况下,如果目标数据库不支持行锁定功能,则它是并且可以配置空字符串。 请咨询您的供应商,了解表达式中有关在更新之前锁定行的特定和可能的提示。JdbcMetadataStorelockHintFOR UPDATESELECTspring-doc.cn