JDBC Metadata Store
5.0 版本引入了 JDBC MetadataStore
(請參閱 Metadata Store) 實作。您可以使用 JdbcMetadataStore
在應用程式重新啟動後維持中繼資料狀態。此 MetadataStore
實作可與以下適配器一起使用:
若要設定這些適配器以使用 JdbcMetadataStore
,請宣告一個 bean 名稱為 metadataStore
的 Spring bean。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
。輸入通道適配器可以在 poller 設定中提供對 TransactionManager
的參考。與非交易式 MetadataStore
實作不同,使用 JdbcMetadataStore
時,項目僅在交易提交後才會出現在目標表中。發生回滾時,不會將任何項目新增至 INT_METADATA_STORE
表。
自 5.0.7 版本起,您可以為 JdbcMetadataStore
設定 RDBMS 供應商特定的 lockHint
選項,以針對中繼資料儲存項目進行基於鎖定的查詢。預設情況下,它是 FOR UPDATE
,如果目標資料庫不支援資料列鎖定功能,則可以設定為空字串。請諮詢您的供應商,以取得在 SELECT
運算式中用於在更新前鎖定資料列的特定且可能的提示。