Erstellen eines Streams über die APIs - Amazon-Kinesis-Data-Streams

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Erstellen eines Streams über die APIs

Führen Sie die folgenden Schritte aus, um Ihren Kinesis-Datenstrom zu erstellen.

Kinesis-Data-Streams-Client erstellen

Bevor Sie mit Kinesis-Datenströmen arbeiten können, müssen Sie ein Client-Objekt erstellen. Der folgende Java-Code instanziiert einen Client-Builder und verwendet ihn zum Festlegen der Region, der Anmeldeinformationen und der Client-Konfiguration. Anschließend erstellt er ein Client-Objekt.

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

Weitere Informationen finden Sie unter Regionen und Endpunkte der Kinesis Data Streams im Allgemeine AWS-Referenz.

Erstellen des Streams

Nachdem Sie Ihren Kinesis-Data-Streams-Client erstellt haben, können Sie mithilfe der Konsole von Kinesis Data Streams oder programmgesteuert einen Stream erstellen, mit dem Sie anschließend arbeiten. Um einen Stream programmgesteuert zu erstellen, instanziieren Sie ein CreateStreamRequest-Objekt und legen Sie einen Namen für den Stream sowie (wenn Sie den Bereitstellungsmodus verwenden möchten) die Anzahl der für den Stream zu verwendenden Shards fest.

  • On-Demand-Modus:

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

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

Der Streamname bezeichnet den Stream. Der Name bezieht sich auf das AWS Konto, das von der Anwendung verwendet wird. Er ist auch nach Region beschränkt. Das heißt, zwei Streams in zwei verschiedenen AWS Konten können denselben Namen haben, und zwei Streams in demselben AWS Konto, aber in zwei verschiedenen Regionen können denselben Namen haben, aber nicht zwei Streams auf demselben Konto und in derselben Region.

Der Durchsatz des Streams bezieht sich auf die Anzahl der Shards; für einen höheren bereitgestellten Durchsatz sind mehr Shards erforderlich. Mehr Shards erhöhen auch die AWS Kosten, die für den Stream anfallen. Weitere Informationen zum Berechnen einer ausreichenden Anzahl von Shards für Ihre Anwendung finden Sie unter Auswahl des Datenstrom-Kapazitätsmodus.

Wenn das createStreamRequest-Objekt konfiguriert ist, erstellen Sie einen Stream, indem Sie die createStream-Methode auf dem Client aufrufen. Warten Sie nach dem Aufrufen von createStream, bis der Stream den Status ACTIVE erreicht hat, bevor Sie eine Operation auf dem Stream ausführen. Rufen Sie die describeStream-Methode auf, um den Status des Streams zu überprüfen. Allerdings löst describeStream eine Ausnahme aus, wenn der Stream nicht existiert. Aus diesem Grund müssen Sie den Aufruf describeStream in einen try/catch-Block einschließen.

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" ); }