

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.

# Cree una transmisión mediante el APIs
<a name="kinesis-using-sdk-java-create-stream"></a>

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

## Crear el cliente de Kinesis Data Streams
<a name="kinesis-using-sdk-java-create-client"></a>

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](https://docs.aws.amazon.com/general/latest/gr/rande.html#ak_region) en *Referencia general de AWS*.

## Crear la secuencia
<a name="kinesis-using-sdk-java-create-the-stream"></a>

Ahora que ya creó su cliente de Kinesis Data Streams, puede crear un flujo mediante la consola o de forma programada. Para crear un flujo de forma programada, cree una instancia de un objeto `CreateStreamRequest` y especifique un nombre para el flujo. Si desea usar el modo aprovisionado, debe especificar el número de particiones del flujo que deben usarse.
+ **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 se refiere a 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 del flujo depende del número de particiones. Para obtener un mayor rendimiento aprovisionado, necesitará más particiones. 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 correcto para el flujo](how-do-i-size-a-stream.md).

 Tras configurar el objeto `createStreamRequest`, cree un flujo 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" );
}
```