Création d'un flux via les API - Amazon Kinesis Data Streams

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.

Création d'un flux via les API

Suivez les étapes ci-dessous pour créer votre flux de données Kinesis.

Création du client Kinesis Data Streams

Afin de pouvoir travailler avec les flux de données Kinesis, vous devez créer un objet client. Le code Java suivant instancie un générateur client et l'utilise pour définir la région, les informations d'identification et la configuration du client. Il génère ensuite un objet client.

AmazonKinesisClientBuilder clientBuilder = AmazonKinesisClientBuilder.standard(); clientBuilder.setRegion(regionName); clientBuilder.setCredentials(credentialsProvider); clientBuilder.setClientConfiguration(config); AmazonKinesis client = clientBuilder.build();

Pour plus d'informations, consultez la rubrique Régions et points d'extrémité des flux de données Kinesis dans Références générales AWS.

Création du flux

Maintenant que vous avez créé votre client Kinesis Data Streams, vous pouvez créer un flux avec lequel travailler, ce que vous pouvez faire à l'aide de la console Kinesis Data Streams ou par programmation. Pour créer un flux par programmation, instanciez un objet CreateStreamRequest et spécifiez un nom pour le flux et (si vous souhaitez utiliser le mode provisionné) le nombre de partitions à utiliser pour le flux.

  • À la demande :

    CreateStreamRequest createStreamRequest = new CreateStreamRequest(); createStreamRequest.setStreamName( myStreamName );
  • Provisionné :

    CreateStreamRequest createStreamRequest = new CreateStreamRequest(); createStreamRequest.setStreamName( myStreamName ); createStreamRequest.setShardCount( myStreamSize );

Le nom du flux identifie le flux. Le nom est limité au AWS compte utilisé par l'application. Il est également défini pour chaque région. En d'autres termes, deux flux provenant de deux AWS comptes différents peuvent porter le même nom, et deux flux appartenant au même AWS compte mais situés dans deux régions différentes peuvent porter le même nom, mais pas deux flux sur le même compte et dans la même région.

Le débit du flux dépend du nombre de partitions. Le nombre de partitions doit être augmenté pour améliorer le débit alloué. L'augmentation du nombre de partitions augmente également le AWS coût du stream. Pour plus d'informations sur le calcul d'un nombre approprié de partitions pour votre application, consultez Choix du mode de capacité du flux de données.

Une fois l'objet createStreamRequest configuré, créez un flux en appelant la méthode createStream sur le client. Après avoir appelé createStream, attendez que le flux passe à l'état ACTIVE avant d'effectuer des opérations sur le flux. Pour vérifier l'état du flux, appelez la méthode describeStream. Cependant, describeStream lève une exception si le flux n'existe pas. Par conséquent, intégrez l'appel describeStream dans un bloc try/catch.

client.createStream( createStreamRequest ); DescribeStreamRequest describeStreamRequest = new DescribeStreamRequest(); describeStreamRequest.setStreamName( myStreamName ); long startTime = System.currentTimeMillis(); long endTime = startTime + ( 10 * 60 * 1000 ); while ( System.currentTimeMillis() < endTime ) { try { Thread.sleep(20 * 1000); } catch ( Exception e ) {} try { DescribeStreamResult describeStreamResponse = client.describeStream( describeStreamRequest ); String streamStatus = describeStreamResponse.getStreamDescription().getStreamStatus(); if ( streamStatus.equals( "ACTIVE" ) ) { break; } // // sleep for one second // try { Thread.sleep( 1000 ); } catch ( Exception e ) {} } catch ( ResourceNotFoundException e ) {} } if ( System.currentTimeMillis() >= endTime ) { throw new RuntimeException( "Stream " + myStreamName + " never went active" ); }