Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Multi-stream traitement avec KCL
Cette section décrit les modifications requises dans KCL qui vous permettent de créer des applications grand public KCL capables de traiter plusieurs flux de données à la fois.
Important
-
Multi-stream le traitement n'est pris en charge que dans KCL 2.3 ou version ultérieure.
-
Multi-stream le traitement n'est pas pris en charge pour les utilisateurs KCL écrits dans des langages autres que Java qui s'exécutent avec.
multilangdaemon -
Multi-stream le traitement n'est pris en charge dans aucune version de KCL 1.x.
-
MultistreamTracker interface
-
Pour créer une application grand public capable de traiter plusieurs flux en même temps, vous devez implémenter une nouvelle interface appelée MultistreamTracker
. Cette interface inclut la méthode streamConfigListqui renvoie la liste des flux de données et leurs configurations à traiter par l'application consommateur KCL. Notez que les flux de données en cours de traitement peuvent être modifiés pendant l'exécution de l'application client.streamConfigListest appelé périodiquement par KCL pour en savoir plus sur l'évolution des flux de données à traiter. -
streamConfigListRenseigne la StreamConfigliste.
package software.amazon.kinesis.common; import lombok.Data; import lombok.experimental.Accessors; @Data @Accessors(fluent = true) public class StreamConfig { private final StreamIdentifier streamIdentifier; private final InitialPositionInStreamExtended initialPositionInStreamExtended; private String consumerArn; }-
Les champs
StreamIdentifieretInitialPositionInStreamExtendedsont obligatoires, alors qu'ilsconsumerArnsont facultatifs. Vous ne devez fournirconsumerArnque si vous utilisez KCL pour implémenter une application grand public améliorée pour les fans. -
Pour plus d'informations sur
StreamIdentifier, consultez https://github.com/awslabs/amazon-kinesis-client/blob/v2.5.8/amazon-kinesis-client/src/main/java/software/amazon/kinesis/common/StreamIdentifier.java #L129. Pour créer un StreamIdentifier, nous vous recommandons de créer une instance multistream à partir destreamArnetstreamCreationEpochqui est disponible dans KCL 2.5.0 ou version ultérieure. Dans KCL v2.3 et v2.4, qui ne le prennent pas en chargestreamArm, créez une instance multistream en utilisant ce format.account-id:StreamName:streamCreationTimestampCe format sera obsolète et ne sera plus pris en charge à compter de la prochaine version majeure. -
MultistreamTracker inclut également une stratégie pour supprimer les contrats de location d'anciens flux dans le tableau des baux (ancienStreamsLeasesDeletionStrategy). Notez que la stratégie NE PEUT PAS être modifiée pendant l'exécution de l'application consommateur. Pour de plus amples informations, veuillez consulter https://github.com/awslabs/amazon-kinesis-client/blob/0c5042dadf794fe988438436252a5a8fe70b6b0b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/processor/FormerStreamsLeasesDeletionStrategy.java
.
-
Vous pouvez également l'initialiser ConfigsBuilder avec MultiStreamTracker si vous souhaitez implémenter une application client KCL qui traite plusieurs flux en même temps.
* Constructor to initialize ConfigsBuilder with MultiStreamTracker * @param multiStreamTracker * @param applicationName * @param kinesisClient * @param dynamoDBClient * @param cloudWatchClient * @param workerIdentifier * @param shardRecordProcessorFactory */ public ConfigsBuilder(@NonNull MultiStreamTracker multiStreamTracker, @NonNull String applicationName, @NonNull KinesisAsyncClient kinesisClient, @NonNull DynamoDbAsyncClient dynamoDBClient, @NonNull CloudWatchAsyncClient cloudWatchClient, @NonNull String workerIdentifier, @NonNull ShardRecordProcessorFactory shardRecordProcessorFactory) { this.appStreamTracker = Either.left(multiStreamTracker); this.applicationName = applicationName; this.kinesisClient = kinesisClient; this.dynamoDBClient = dynamoDBClient; this.cloudWatchClient = cloudWatchClient; this.workerIdentifier = workerIdentifier; this.shardRecordProcessorFactory = shardRecordProcessorFactory; }
-
Grâce à la prise en charge multiflux mise en œuvre pour votre application client KCL, chaque ligne de la table de location de l'application contient désormais l'ID de partition et le nom du flux des multiples flux de données traités par cette application.
-
Lorsque la prise en charge multiflux de votre application grand public KCL est mise en œuvre, la LeaseKey adopte la structure suivante :.
account-id:StreamName:streamCreationTimestamp:ShardIdPar exemple,111111111:multiStreamTest-1:12345:shardId-000000000336.
Important
Lorsque votre application client KCL existante est configurée pour traiter un seul flux de données, le leaseKey (qui est la clé de partition pour la table des baux) est l'ID de partition. Si vous reconfigurez une application client KCL existante pour traiter plusieurs flux de données, cela rompt votre tableau de location, car la leaseKey structure doit être la suivante : account-id:StreamName:StreamCreationTimestamp:ShardId pour prendre en charge le multiflux.