As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Criar um fluxo usando as APIs
Use as etapas a seguir para criar o fluxo de dados do Kinesis.
Criar o cliente do Kinesis Data Streams
Para trabalhar com fluxos de dados do Kinesis, você precisa criar um objeto de cliente. O seguinte código Java cria uma instância de um criador de cliente e a usa para definir a região, as credenciais e a configuração do cliente. Em seguida, ele cria um objeto do cliente.
AmazonKinesisClientBuilder clientBuilder = AmazonKinesisClientBuilder.standard(); clientBuilder.setRegion(regionName); clientBuilder.setCredentials(credentialsProvider); clientBuilder.setClientConfiguration(config); AmazonKinesis client = clientBuilder.build();
Para obter mais informações, consulte Kinesis Data Streams Regions and Endpoints na Referência geral da AWS.
Criar o stream
Depois de criar o cliente do Kinesis Data Streams, você poderá criar um fluxo com o qual trabalhar. Isso pode ser feito no console do Kinesis Data Streams ou de forma programática. Para criar um fluxo de forma programática, instancie um objeto CreateStreamRequest
, especifique um nome para o fluxo e, se quiser usar o modo provisionado, o número de fragmentos que o fluxo usará.
-
Sob demanda:
CreateStreamRequest createStreamRequest = new CreateStreamRequest(); createStreamRequest.setStreamName( myStreamName );
-
Provisionado:
CreateStreamRequest createStreamRequest = new CreateStreamRequest(); createStreamRequest.setStreamName( myStreamName ); createStreamRequest.setShardCount( myStreamSize );
O nome do stream identifica o stream. O nome tem como escopo a AWS conta usada pelo aplicativo. Ele também é delimitado por região. Ou seja, dois fluxos em duas AWS contas diferentes podem ter o mesmo nome, e dois fluxos na mesma AWS conta, mas em duas regiões diferentes, podem ter o mesmo nome, mas não dois fluxos na mesma conta e na mesma região.
A throughput do stream depende do número de estilhaços: mais estilhaços são necessários para uma maior throughput provisionada. Mais fragmentos também aumentam o custo AWS cobrado pela transmissão. Para obter mais informações sobre como calcular um número apropriado de estilhaços para o aplicativo, consulte Escolha do modo de capacidade do fluxo de dados.
Depois que o objeto createStreamRequest
é configurado, crie um stream chamando o método createStream
para o cliente. Após chamar createStream
, aguarde o stream alcançar o estado ACTIVE
antes de executar qualquer operação nele. Para verificar o estado do stream, chame o método describeStream
. Se o stream não existir, describeStream
lançará uma exceção, portanto, coloque a chamada a describeStream
em um bloco 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" ); }