JDBC 元資料儲存
版本 5.0 引入了 JDBC MetadataStore
(參見 元資料儲存)實現。您可以使用 JdbcMetadataStore
來維護跨應用重啟的元資料狀態。這個 MetadataStore
實現可以與以下介面卡一起使用:
要配置這些介面卡使用 JdbcMetadataStore
,請宣告一個 Spring bean,其 bean 名稱為 metadataStore
。Feed 入站通道介面卡和 Feed 入站通道介面卡都會自動檢測並使用已宣告的 JdbcMetadataStore
,如下例所示:
@Bean
public MetadataStore metadataStore(DataSource dataSource) {
return new JdbcMetadataStore(dataSource);
}
org.springframework.integration.jdbc
包包含針對多種 RDMBS 廠商的資料庫 schema 指令碼。例如,以下列表顯示了元資料表的 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
配置特定於 RDMBS 廠商的 lockHint
選項,用於對元資料儲存條目進行基於鎖的查詢。預設情況下,它是 FOR UPDATE
,如果目標資料庫不支援行鎖定功能,則可以配置為空字串。請諮詢您的廠商,瞭解在 SELECT
表示式中鎖定行(更新前)的特定和可能的提示。