Dela via


Så här skapar du ett Java-program som använder Azure Cosmos DB för NoSQL och ändringsflödesprocessor

GÄLLER FÖR: NoSQL

Azure Cosmos DB är en fullständigt hanterad NoSQL-databastjänst som tillhandahålls av Microsoft. Det gör att du enkelt kan skapa globalt distribuerade och mycket skalbara program. Den här instruktionsguiden vägleder dig genom processen att skapa ett Java-program som använder Azure Cosmos DB för NoSQL-databasen och implementerar ändringsflödesprocessorn för databearbetning i realtid. Java-programmet kommunicerar med Azure Cosmos DB for NoSQL med hjälp av Azure Cosmos DB Java SDK v4.

Viktigt!

Den här självstudien gäller endast För Azure Cosmos DB Java SDK v4. Mer information finns i felsökningsguiden för Java SDK v4 i Azure Cosmos DB Java SDK v4, Maven-lagringsplatsen, ändringsflödesprocessorn i Azure Cosmos DB och Azure Cosmos DB Java SDK v4. Om du för närvarande använder en äldre version än v4 kan du läsa guiden Migrera till Azure Cosmos DB Java SDK v4 för hjälp med att uppgradera till v4.

Förutsättningar

  • Azure Cosmos DB-konto: du kan skapa det från Azure-portalen eller använda Azure Cosmos DB-emulatorn .

  • Java Development Environment: Kontrollera att Du har Java Development Kit (JDK) installerat på datorn med minst 8 versioner.

  • Azure Cosmos DB Java SDK V4: tillhandahåller de funktioner som krävs för att interagera med Azure Cosmos DB.

Bakgrund

Azure Cosmos DB-ändringsflödet tillhandahåller ett händelsedrivet gränssnitt för att utlösa åtgärder som svar på dokumentinfogning som har många användningsområden.

Arbetet med att hantera ändringsflödeshändelser hanteras till stor del av ändringsflödesprocessorbiblioteket som är inbyggt i SDK:n. Det här biblioteket är tillräckligt kraftfullt för att distribuera ändringsflödeshändelser mellan flera arbetare, om så önskas. Allt du behöver göra är att ge ändringsflödesbiblioteket ett återanrop.

Det här enkla exemplet på Java-programmet visar databearbetning i realtid med Azure Cosmos DB och processorn för ändringsflöde. Programmet infogar exempeldokument i en "feedcontainer" för att simulera en dataström. Ändringsflödesprocessorn, som är bunden till feedcontainern, bearbetar inkommande ändringar och loggar dokumentinnehållet. Processorn hanterar automatiskt lån för parallell bearbetning.

Källkod

Du kan klona SDK-exempeldatabasen och hitta det här exemplet i 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/

Genomgång

  1. ChangeFeedProcessorOptions Konfigurera i ett Java-program med Hjälp av Azure Cosmos DB och Azure Cosmos DB Java SDK V4. Innehåller ChangeFeedProcessorOptions viktiga inställningar för att styra beteendet för ändringsflödesprocessorn under databearbetningen.

    options = new ChangeFeedProcessorOptions();
    options.setStartFromBeginning(false);
    options.setLeasePrefix("myChangeFeedDeploymentUnit");
    options.setFeedPollDelay(Duration.ofSeconds(5));
    options.setFeedPollThroughputControlConfig(throughputControlGroupConfig);
    
  2. Initiera ChangeFeedProcessor med relevanta konfigurationer, inklusive värdnamnet, feedcontainern, lånecontainern och datahanteringslogik. Metoden start() initierar databearbetningen, vilket möjliggör samtidig bearbetning och realtidsbearbetning av inkommande dataändringar från feedcontainern.

    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. Ange att ombudet hanterar inkommande dataändringar med hjälp av handleChanges() metoden . Metoden bearbetar de mottagna JsonNode-dokumenten från ändringsflödet. Som utvecklare har du två alternativ för att hantera JsonNode-dokumentet som tillhandahålls av Ändringsflöde. Ett alternativ är att arbeta med dokumentet i form av en JsonNode. Detta är bra, särskilt om du inte har en enda enhetlig datamodell för alla dokument. Det andra alternativet – transformera JsonNode till en POJO med samma struktur som JsonNode. Sedan kan du arbeta med 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. Skapa och kör Java-programmet. Programmet startar ändringsflödesprocessorn, infogar exempeldokument i feedcontainern och bearbetar de inkommande ändringarna.

Slutsats

I den här guiden har du lärt dig hur du skapar ett Java-program med Hjälp av Azure Cosmos DB Java SDK V4 som använder Azure Cosmos DB för NoSQL-databasen och använder ändringsflödesprocessorn för databearbetning i realtid. Du kan utöka det här programmet för att hantera mer komplexa användningsfall och skapa robusta, skalbara och globalt distribuerade program med Hjälp av Azure Cosmos DB.

Ytterligare resurser

Nästa steg

Nu kan du fortsätta med att lära dig mer om ändringsflödesuppskattning i följande artiklar: