Tous les produits
Search
Centre de documentation

Tablestore:Create a tunnel

Dernière mise à jour :Aug 18, 2026

Utilisez le SDK Tablestore pour Java afin de créer un tunnel BaseData, Stream ou BaseAndStream pour une table de données.

Prérequis

Description de la fonctionnalité

Appelez createTunnel pour créer un tunnel pour une table de données. Vous pouvez créer plusieurs tunnels pour la même table de données. Le type de tunnel détermine les données à consommer : BaseData consomme uniquement les données complètes, Stream consomme uniquement les données incrémentielles, et BaseAndStream consomme les données complètes puis les données incrémentielles.

Remarque

Si Stream est désactivé pour une table de données, la création d'un tunnel Stream ou BaseAndStream active automatiquement Stream et définit la période de rétention des journaux incrémentiels à sept jours.

CreateTunnelResponse createTunnel(CreateTunnelRequest request)
        throws TableStoreException, ClientException

L'exemple de code suivant crée un tunnel BaseData nommé example_tunnel pour la table de données example_table.

String tableName = "example_table";
String tunnelName = "example_tunnel";

CreateTunnelRequest request =
        new CreateTunnelRequest(
                tableName, tunnelName, TunnelType.BaseData);
CreateTunnelResponse response = tunnelClient.createTunnel(request);

System.out.println("TunnelId: " + response.getTunnelId());

Paramètres

CreateTunnelRequest contient les paramètres suivants :

Nom

Type

Description

tableName (obligatoire)

String

Le nom de la table de données.

tunnelName (obligatoire)

String

Le nom du tunnel.

tunnelType (obligatoire)

TunnelType

Le type de tunnel. BaseData consomme uniquement les données complètes. Stream consomme uniquement les données incrémentielles. BaseAndStream consomme les données complètes puis les données incrémentielles.

streamTunnelConfig (facultatif)

StreamTunnelConfig

La configuration de la plage de données incrémentielles pour les tunnels Stream et BaseAndStream. Si vous configurez ce paramètre, spécifiez une plage horaire valide.

streamRecordOptions (facultatif)

StreamRecordOptions

La configuration des enregistrements incrémentiels pour les tunnels Stream et BaseAndStream. Ce paramètre nécessite le SDK Tablestore pour Java version 5.17.11 ou ultérieure.

Plage de données incrémentielles

streamTunnelConfig est de type StreamTunnelConfig et contient les paramètres suivants :

Nom

Type

Description

flag (facultatif)

StartOffsetFlag

La position de départ utilisée lorsque startOffset n'est pas spécifié. LATEST démarre à partir de l'heure de création du tunnel. EARLIEST démarre à partir du journal incrémentiel le plus ancien disponible. Valeur par défaut : LATEST.

startOffset (facultatif)

long

L'horodatage de début des données incrémentielles. Unité : millisecondes. Plage valide : [Heure système actuelle - Période de rétention Stream + 5 minutes, heure système actuelle). Si ce paramètre est spécifié, flag ne prend pas effet.

endOffset (facultatif)

long

L'horodatage de fin des données incrémentielles. Unité : millisecondes. Si les deux horodatages sont spécifiés, ce paramètre doit être supérieur à startOffset. Si ce paramètre n'est pas spécifié, la consommation des données incrémentielles se poursuit.

Remarque

La période de rétention Stream correspond à la période de rétention des journaux incrémentiels. La valeur maximale est de sept jours. Vous pouvez définir cette période lors de l'activation de Stream pour une table de données. La période ne peut pas être modifiée après sa définition.

Contenu des enregistrements incrémentiels

streamRecordOptions est de type StreamRecordOptions et contient les paramètres suivants :

Nom

Type

Description

getVersionGeneratorValue (facultatif)

boolean

Indique si les enregistrements incrémentiels contiennent la valeur générée par le générateur de version. Valeur par défaut : false.

getSysColumns (facultatif)

boolean

Indique si les enregistrements incrémentiels contiennent les colonnes système. Valeur par défaut : false.

getNewRowInfo (facultatif)

boolean

Indique si les enregistrements incrémentiels contiennent les dernières informations de ligne. Valeur par défaut : false.

oldColumnsToGet (facultatif)

StreamColumn

Les colonnes d'attribut à renvoyer depuis la ligne d'origine.

newColumnsToGet (facultatif)

StreamColumn

Les colonnes d'attribut à renvoyer depuis la dernière ligne.

Colonnes des enregistrements incrémentiels

streamRecordOptions.oldColumnsToGet et streamRecordOptions.newColumnsToGet sont de type StreamColumn et contiennent les paramètres suivants :

Nom

Type

Description

columnType (obligatoire)

StreamColumnType

Le mode de sélection des colonnes d'attribut. SPECIFIED_COLUMN spécifie les colonnes d'attribut nommées. INPUT_COLUMNS spécifie les colonnes d'attribut écrites ou mises à jour par l'opération. ALL_COLUMNS spécifie toutes les colonnes d'attribut.

columnNames (facultatif)

List<String>

Les noms des colonnes d'attribut à renvoyer lorsque columnType est défini sur SPECIFIED_COLUMN.

Réponse

CreateTunnelResponse contient le champ de réponse suivant :

Champ

Type

Description

tunnelId

String

L'ID du tunnel créé. Appelez getTunnelId() pour obtenir l'ID. L'ID est requis pour consommer les données du tunnel.

Scénarios

Spécifier une plage de données incrémentielles

L'exemple de code suivant crée un tunnel Stream et spécifie la plage de données incrémentielles de la dernière heure.

long endTime = System.currentTimeMillis() - 1_000L;
long startTime = endTime - 60 * 60 * 1000L;
StreamTunnelConfig streamConfig =
        new StreamTunnelConfig(startTime, endTime);

CreateTunnelRequest request =
        new CreateTunnelRequest(
                "example_table",
                "example_stream_tunnel",
                TunnelType.Stream);
request.setStreamTunnelConfig(streamConfig);

CreateTunnelResponse response = tunnelClient.createTunnel(request);
System.out.println("TunnelId: " + response.getTunnelId());

Configurer le contenu des enregistrements incrémentiels

L'exemple de code suivant crée un tunnel Stream et configure les enregistrements incrémentiels pour renvoyer la valeur du générateur de version, les colonnes système, les dernières informations de ligne, la colonne d'attribut value de la ligne d'origine et toutes les colonnes d'attribut de la dernière ligne.

StreamColumn oldColumns =
        new StreamColumn(StreamColumnType.SPECIFIED_COLUMN);
oldColumns.addColumnName("value");

StreamRecordOptions recordOptions = new StreamRecordOptions();
recordOptions.setGetVersionGeneratorValue(true);
recordOptions.setGetSysColumns(true);
recordOptions.setGetNewRowInfo(true);
recordOptions.setOldColumnsToGet(oldColumns);
recordOptions.setNewColumnsToGet(
        new StreamColumn(StreamColumnType.ALL_COLUMNS));

CreateTunnelRequest request =
        new CreateTunnelRequest(
                "example_table", "example_stream_tunnel", TunnelType.Stream);
request.setStreamRecordOptions(recordOptions);

CreateTunnelResponse response = tunnelClient.createTunnel(request);
System.out.println("TunnelId: " + response.getTunnelId());