全部產品
Search
文件中心

Tablestore:建立通道

更新時間:Sep 10, 2024

如果需要即時消費表中資料,您需要調用CreateTunnel介面為資料表建立一個通道,一張資料表上可以建立多個通道。在建立通道時需要指定資料表名稱、通道名稱和通道類型。

前提條件

  • 已初始化TunnelClient。

  • 已建立資料表。具體操作,請參見建立資料表

參數

請求參數

參數

說明

TableName

資料表名稱。

TunnelName

通道的名稱。

TunnelType

通道的類型。取值範圍如下:

  • BaseData:全量類型。只能消費處理全量資料。

  • Stream:增量類型。只能消費處理增量資料。

  • BaseAndStream:全量加增量類型。全量資料消費處理完成後,再消費處理增量資料。

建立增量或者全量加增量類型的通道時,系統預設建立通道後寫入的資料為增量資料。如果要消費指定時間點後的增量資料,請配置增量資料的起始時間戳記(startTime)。

  • 起始時間戳記的取值範圍為[當前系統時間-Stream到期時間+5分鐘 , 當前系統時間],單位為毫秒

    說明

    Stream到期時間為增量日誌到期時間長度的毫秒單位時間戳記,最大值為7天。您可以在為資料表開啟Stream功能時設定,到期時間長度一經設定不能修改。

  • 您也可以配置增量資料的結束時間戳記(endTime),結束時間戳記的取值必須大於起始時間戳記。

響應參數

參數

說明

TunnelId

通道的ID。

ResponseInfo

返回的一些其它欄位。

RequestId

當次請求的Request ID。

樣本

建立全量類型的通道

以下樣本用於為資料表建立一個全量類型的通道。

//支援建立三種類型的通道TunnelType.BaseData(全量)、TunnelType.Stream(增量)和TunnelType.BaseAndStream(全量加增量)。
//本樣本為建立全量類型的通道,如果需要建立其它類型的通道,則將CreateTunnelRequest中的TunnelType設定為相應的類型。
private static void createTunnel(TunnelClient client, String tableName, String tunnelName) {
    CreateTunnelRequest request = new CreateTunnelRequest(tableName, tunnelName, TunnelType.BaseData);
    CreateTunnelResponse resp = client.createTunnel(request);
    System.out.println("RequestId: " + resp.getRequestId());
    System.out.println("TunnelId: " + resp.getTunnelId());
}

建立增量或者全量加增量類型的通道

以下樣本用於為資料表建立增量或全量加增量類型的通道,並指定讀取的增量資料時間範圍。

//建立增量或者全量加增量類型的通道,指定起始時間戳記或結束時間戳記,表示讀取的增量資料時間範圍。對於全量類型的通道,StreamTunnelConfig的配置不生效。
private static void createStreamTunnelByOffset(TunnelClient client,String tableName,String tunnelName, long startTime, long endTime){
    CreateTunnelRequest createTunnelRequest = new CreateTunnelRequest(tableName,tunnelName, TunnelType.Stream);//建立增量類型通道。
    //CreateTunnelRequest createTunnelRequest = new CreateTunnelRequest(tableName,tunnelName, TunnelType.BaseAndStream);//建立全量加增量類型通道。
    StreamTunnelConfig streamTunnelConfig = new StreamTunnelConfig();  
    /*
        指定增量資料的起始時間戳記(startTime)和結束時間戳記(endTime)。單位為毫秒,取值範圍為[CurrentSystemTime - StreamExpiration + 5 minute, CurrentSystemTime)。
        其中CurrentSystemTime為當前系統時間的毫秒單位時間戳記;StreamExpiration為增量日誌到期時間的毫秒單位時間戳記,最大值為7天。您可以在為資料表開啟Stream功能時設定。
        結束時間戳記的取值必須大於起始時間戳記。
     */
    streamTunnelConfig.setStartOffset(startTime);
    streamTunnelConfig.setEndOffset(endTime);
    createTunnelRequest.setStreamTunnelConfig(streamTunnelConfig);
    CreateTunnelResponse resp = client.createTunnel(createTunnelRequest);
    System.out.println("RequestId: " + resp.getRequestId());
    System.out.println("TunnelId: " + resp.getTunnelId());
}

常見問題

使用通道服務消費資料時報錯OTSTrimmedDataAccess Requested stream data is already trimmed or does not exist

相關文檔