Creación de un flujo a través de las API - 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.

Creación de un flujo a través de las API

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

Creación del 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.

Creación de la secuencia

Ahora que ya creó su cliente de Kinesis Data Streams, puede crear un flujo con el que trabajar, lo que puede hacer con la consola de Kinesis Data Streams o mediante programación. Para crear un flujo de forma programada, cree una instancia de un objeto CreateStreamRequest y especifique un nombre para el flujo y el número de particiones que ha de usar esto.

  • 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 en dos AWS cuentas diferentes pueden tener el mismo nombre y dos flujos en la misma AWS cuenta pero en dos regiones diferentes pueden tener el mismo nombre, pero no dos flujos en la misma cuenta y en la misma región.

El rendimiento de la secuencia es una función del número de fragmentos; se requieren más fragmentos para un rendimiento con mayor aprovisionamiento. Si hay más fragmentos, también se incrementa el AWS coste de la transmisión. Para obtener más información sobre cómo calcular un número adecuado de fragmentos para una aplicación, consulte Elegir el modo de capacidad del flujo de datos.

Tras configurar el objeto createStreamRequest, cree una secuencia llamando al método createStream 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" ); }