Crear una transmisión con la APIs - Amazon Kinesis Data Streams

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Crear una transmisión con la APIs

Siga estos pasos para crear su flujo de datos de Kinesis.

Cree el cliente de Kinesis Data Streams

Antes de poder trabajar con flujos de datos de Kinesis, debe crear un objeto cliente. El siguiente código Java crea una instancia de un compilador de clientes y la usa para definir la región, las credenciales y la configuración del cliente. A continuación, crea un objeto cliente.

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

Para obtener más información, consulte Regiones y puntos de conexión de Kinesis Data Streams en Referencia general de AWS.

Cree la transmisión

Ahora que ha creado su cliente de Kinesis Data Streams, puede crear una transmisión mediante la consola o mediante programación. Para crear una transmisión mediante programación, cree una instancia de un CreateStreamRequest objeto y especifique un nombre para la transmisión. Si desea utilizar el modo aprovisionado, especifique el número de fragmentos que utilizará la transmisión.

  • Bajo demanda:

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

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

El nombre de la secuencia identifica la secuencia. El nombre depende de la AWS cuenta utilizada por la aplicación. También se limita a la región. Es decir, dos flujos de dos AWS cuentas diferentes pueden tener el mismo nombre, y dos flujos de la misma AWS cuenta pero en dos regiones diferentes pueden tener el mismo nombre, pero no dos flujos de la misma cuenta y de la misma región.

El rendimiento de la transmisión depende del número de fragmentos. Para obtener un mayor rendimiento aprovisionado, necesitará más fragmentos. Un mayor número de fragmentos también aumenta el coste de la transmisión AWS . Para obtener más información sobre cómo calcular un número adecuado de fragmentos para una aplicación, consulte Elija el modo de capacidad del flujo de datos.

Una vez que haya configurado el createStreamRequest objeto, cree una secuencia llamando al createStream método en el cliente. Después de llamar a createStream, espere a que la secuencia alcance el estado ACTIVE antes de realizar cualquier operación en la secuencia. Para comprobar el estado de la secuencia, llame al método describeStream. Sin embargo, describeStream arroja una excepción si la secuencia no existe. Por lo tanto, incluya la llamada a describeStream en un bloque 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" ); }