Partilhar via


Como criar um aplicativo Java que usa o Azure Cosmos DB para NoSQL e alterar o processador de feed

APLICA-SE A: NoSQL

O Azure Cosmos DB é um serviço de banco de dados NoSQL totalmente gerenciado fornecido pela Microsoft. Ele permite que você crie aplicativos globalmente distribuídos e altamente escaláveis com facilidade. Este guia de instruções orienta você pelo processo de criação de um aplicativo Java que usa o banco de dados do Azure Cosmos DB para NoSQL e implementa o Change Feed Processor para processamento de dados em tempo real. O aplicativo Java se comunica com o Azure Cosmos DB para NoSQL usando o SDK Java v4 do Azure Cosmos DB.

Importante

Este tutorial é apenas para o SDK Java v4 do Azure Cosmos DB. Consulte as Notas de versão do SDK Java do Azure Cosmos DB v4, o repositório Maven, o processador de feed Change no Azure Cosmos DB e o guia de solução de problemas do SDK Java v4 do Azure Cosmos DB Java SDK v4 para obter mais informações. Se você estiver usando uma versão mais antiga do que a v4, consulte o guia Migrar para o SDK Java do Azure Cosmos DB v4 para obter ajuda na atualização para a v4.

Pré-requisitos

  • Conta do Azure Cosmos DB: você pode criá-la a partir do portal do Azure ou também pode usar o Emulador do Azure Cosmos DB.

  • Java Development Environment: Certifique-se de ter o Java Development Kit (JDK) instalado em sua máquina com pelo menos 8 versões.

  • Azure Cosmos DB Java SDK V4: fornece os recursos necessários para interagir com o Azure Cosmos DB.

Fundo

O feed de alterações do Azure Cosmos DB fornece uma interface orientada a eventos para acionar ações em resposta à inserção de documentos que tem muitos usos.

O trabalho de gerenciamento de eventos de feed de alterações é em grande parte cuidado pela biblioteca do processador de feed de alterações incorporada ao SDK. Essa biblioteca é poderosa o suficiente para distribuir eventos de feed de alterações entre vários trabalhadores, se desejado. Tudo o que você precisa fazer é fornecer à biblioteca de feed de alterações um retorno de chamada.

Este exemplo simples de aplicativo Java está demonstrando o processamento de dados em tempo real com o Azure Cosmos DB e o Change Feed Processor. O aplicativo insere documentos de amostra em um "contêiner de alimentação" para simular um fluxo de dados. O Change Feed Processor, vinculado ao contêiner de feed, processa as alterações de entrada e registra o conteúdo do documento. O processador gerencia automaticamente as concessões para processamento paralelo.

Código fonte

Você pode clonar o repositório de exemplo do SDK e encontrar este exemplo em SampleChangeFeedProcessor.java:

git clone https://github.com/Azure-Samples/azure-cosmos-java-sql-api-samples.git
cd azure-cosmos-java-sql-api-sample/src/main/java/com/azure/cosmos/examples/changefeed/

Instruções

  1. Configure o em um aplicativo Java usando o Azure Cosmos DB e o ChangeFeedProcessorOptions Azure Cosmos DB Java SDK V4. O ChangeFeedProcessorOptions fornece configurações essenciais para controlar o comportamento do Change Feed Processor durante o processamento de dados.

    options = new ChangeFeedProcessorOptions();
    options.setStartFromBeginning(false);
    options.setLeasePrefix("myChangeFeedDeploymentUnit");
    options.setFeedPollDelay(Duration.ofSeconds(5));
    options.setFeedPollThroughputControlConfig(throughputControlGroupConfig);
    
  2. Inicialize o ChangeFeedProcessor com configurações relevantes, incluindo o nome do host, o contêiner de feed, o contêiner de concessão e a lógica de tratamento de dados. O método start() inicia o processamento de dados, permitindo o processamento simultâneo e em tempo real das alterações de dados recebidas do contêiner de alimentação.

    logger.info("Start Change Feed Processor on worker (handles changes asynchronously)");
    ChangeFeedProcessor changeFeedProcessorInstance = new ChangeFeedProcessorBuilder()
        .hostName("SampleHost_1")
        .feedContainer(feedContainer)
        .leaseContainer(leaseContainer)
        .handleChanges(handleChanges())
        .options(options)
        .buildChangeFeedProcessor();
    changeFeedProcessorInstance.start()
                               .subscribeOn(Schedulers.boundedElastic())
                               .subscribe();
    
  3. Especifique que o delegado lida com as alterações de dados de entrada usando o handleChanges() método. O método processa os documentos JsonNode recebidos do Change Feed. Como desenvolvedor, você tem duas opções para lidar com o documento JsonNode fornecido pelo Change Feed. Uma opção é operar no documento na forma de um JsonNode. Isso é ótimo, especialmente se você não tiver um único modelo de dados uniforme para todos os documentos. A segunda opção - transformar o JsonNode em um POJO com a mesma estrutura do JsonNode. Então você pode operar no POJO.

    private static Consumer<List<JsonNode>> handleChanges() {
        return (List<JsonNode> docs) -> {
            logger.info("Start handleChanges()");
    
            for (JsonNode document : docs) {
                try {
                    //Change Feed hands the document to you in the form of a JsonNode
                    //As a developer you have two options for handling the JsonNode document provided to you by Change Feed
                    //One option is to operate on the document in the form of a JsonNode, as shown below. This is great
                    //especially if you do not have a single uniform data model for all documents.
                    logger.info("Document received: " + OBJECT_MAPPER.writerWithDefaultPrettyPrinter()
                            .writeValueAsString(document));
    
                    //You can also transform the JsonNode to a POJO having the same structure as the JsonNode,
                    //as shown below. Then you can operate on the POJO.
                    CustomPOJO2 pojo_doc = OBJECT_MAPPER.treeToValue(document, CustomPOJO2.class);
                    logger.info("id: " + pojo_doc.getId());
    
                } catch (JsonProcessingException e) {
                    e.printStackTrace();
                }
            }
            isWorkCompleted = true;
            logger.info("End handleChanges()");
    
        };
    }
    
  4. Construa e execute a aplicação Java. O aplicativo inicia o Change Feed Processor, insere documentos de amostra no contêiner de feed e processa as alterações de entrada.

Conclusão

Neste guia, você aprendeu como criar um aplicativo Java usando o SDK Java V4 do Azure Cosmos DB que usa o banco de dados do Azure Cosmos DB para NoSQL e usa o Processador de Feed de Alterações para processamento de dados em tempo real. Você pode estender esse aplicativo para lidar com casos de uso mais complexos e criar aplicativos robustos, escaláveis e distribuídos globalmente usando o Azure Cosmos DB.

Recursos adicionais

Próximos passos

Agora você pode continuar para saber mais sobre o estimador de feed de alterações nos seguintes artigos: