Condividi tramite


Come creare un'applicazione Java che usa Azure Cosmos DB per NoSQL e il processore dei feed di modifiche

Azure Cosmos DB è un servizio di database NoSQL completamente gestito fornito da Microsoft. Consente di creare applicazioni distribuite a livello globale e altamente scalabili con facilità. Questa guida pratica illustra il processo di creazione di un'applicazione Java che usa il database Azure Cosmos DB per NoSQL e implementa il processore dei feed di modifiche per l'elaborazione dei dati in tempo reale. L'applicazione Java comunica con Azure Cosmos DB per NoSQL usando Azure Cosmos DB Java SDK v4.

Importante

Questa esercitazione è solo per Java SDK v4 di Azure Cosmos DB. Per altre informazioni, vedere le note sulla versione di Azure Cosmos DB Java SDK v4, il repository Maven, il processore dei feed di modifiche in Azure Cosmos DB e la guida alla risoluzione dei problemi di Java SDK v4 di Azure Cosmos DB. Se attualmente si usa una versione precedente a v4, vedere l'articolo Eseguire la migrazione a Java SDK v4 per Azure Cosmos DB per informazioni sull'aggiornamento a v4.

Prerequisiti

Background

Il feed di modifiche di Azure Cosmos DB fornisce un'interfaccia guidata dagli eventi per attivare azioni in risposta all'inserimento di documenti che ha molti usi.

Il lavoro di gestione degli eventi del feed di modifiche è in gran parte curato dalla libreria processore dei feed di modifiche integrata nell'SDK. Questa libreria è abbastanza potente da distribuire gli eventi del feed di modifiche tra più lavoratori, se desiderato. Tutto quello che devi fare è fornire alla libreria dei feed di modifiche un callback.

Questo semplice esempio di applicazione Java illustra l'elaborazione dei dati in tempo reale con Azure Cosmos DB e il processore del feed di modifiche. L'applicazione inserisce documenti di esempio in un "contenitore feed" per simulare un flusso di dati. Il Processore di Feed delle Modifiche, associato al contenitore del feed, elabora le modifiche in ingresso e registra il contenuto del documento. Il processore gestisce automaticamente i lease per l'elaborazione parallela.

Codice sorgente

È possibile clonare il repository di esempio dell'SDK e trovare questo esempio in 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/

Walkthrough

  1. Configurare il ChangeFeedProcessorOptions in un'applicazione Java utilizzando Azure Cosmos DB e Azure Cosmos DB Java SDK V4. Il ChangeFeedProcessorOptions offre impostazioni essenziali per controllare il comportamento del Processore di Feed di Modifiche durante l'elaborazione dei dati.

    options = new ChangeFeedProcessorOptions();
    options.setStartFromBeginning(false);
    options.setLeasePrefix("myChangeFeedDeploymentUnit");
    options.setFeedPollDelay(Duration.ofSeconds(5));
    options.setFeedPollThroughputControlConfig(throughputControlGroupConfig);
    
  2. Inizializzare ChangeFeedProcessor con le configurazioni pertinenti, inclusi il nome host, il contenitore di feed, il contenitore di lease e la logica di gestione dei dati. Il metodo start() avvia l'elaborazione dei dati, abilitando l'elaborazione simultanea e in tempo reale delle modifiche dei dati in ingresso dal contenitore di feed.

    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. Specificare il delegato che gestisce le modifiche ai dati in ingresso usando il handleChanges() metodo . Il metodo elabora i documenti JsonNode ricevuti dal feed di modifiche. Gli sviluppatori hanno due opzioni per gestire il documento JsonNode fornito dal feed di modifiche. Un'opzione consiste nell'operare sul documento sotto forma di JsonNode. Ciò è particolarmente utile se non si dispone di un singolo modello di dati uniforme per tutti i documenti. La seconda opzione: trasformare JsonNode in un poJO con la stessa struttura di JsonNode. È quindi possibile operare sul 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. Compilare ed eseguire l'applicazione Java. L'applicazione avvia il Processore del flusso di modifiche, inserisce documenti di esempio nel contenitore del flusso ed elabora le modifiche in ingresso.

Conclusione

In questa guida si è appreso come creare un'applicazione Java usando Azure Cosmos DB Java SDK V4 che usa il database Azure Cosmos DB per NoSQL e usa il processore dei feed di modifiche per l'elaborazione dei dati in tempo reale. È possibile estendere questa applicazione per gestire casi d'uso più complessi e creare applicazioni affidabili, scalabili e distribuite a livello globale usando Azure Cosmos DB.

Risorse aggiuntive

Passaggi successivi

È ora possibile continuare a ottenere altre informazioni sullo strumento di stima del feed di modifiche negli articoli seguenti: