Megosztás a következőn keresztül:


Az Azure Cosmos DB for NoSQL-t és a változáscsatorna-feldolgozót használó Java-alkalmazás létrehozása

A KÖVETKEZŐRE VONATKOZIK: NoSQL

Az Azure Cosmos DB a Microsoft által biztosított, teljes körűen felügyelt NoSQL-adatbázis-szolgáltatás. Lehetővé teszi a globálisan elosztott és nagy mértékben skálázható alkalmazások könnyű létrehozását. Ez az útmutató végigvezeti egy Olyan Java-alkalmazás létrehozásának folyamatán, amely az Azure Cosmos DB for NoSQL-adatbázist használja, és valós idejű adatfeldolgozáshoz implementálja a változáscsatorna-feldolgozót. A Java-alkalmazás az Azure Cosmos DB for NoSQL-vel kommunikál az Azure Cosmos DB Java SDK 4-ben.

Fontos

Ez az oktatóanyag csak az Azure Cosmos DB Java SDK v4-hez készült. További információért tekintse meg az Azure Cosmos DB Java SDK v4 kiadási megjegyzéseit, a Maven-adattárat, az Azure Cosmos DB változáscsatorna-feldolgozóját és az Azure Cosmos DB Java SDK v4 hibaelhárítási útmutatóját . Ha jelenleg a v4-es verziónál régebbi verziót használ, a v4-re való frissítésről a Migrálás az Azure Cosmos DB Java SDK v4-es verziójára című útmutatóban olvashat.

Előfeltételek

Háttér

Az Azure Cosmos DB változáscsatornája egy eseményvezérelt felületet biztosít a műveletek aktiválásához a sok felhasználású dokumentumbeszúrásra válaszul.

A változáscsatorna-események kezelését nagyrészt az SDK-ba beépített változáscsatorna feldolgozói kódtára végzi. Ez a kódtár elég hatékony a változáscsatorna-események több feldolgozó között való elosztásához, ha ez szükséges. Mindössze annyit kell tennie, hogy visszahívja a változáscsatorna-kódtárat.

Ez az egyszerű Java-alkalmazás az Azure Cosmos DB-vel és a változáscsatorna-feldolgozóval való valós idejű adatfeldolgozást mutatja be. Az alkalmazás mintadokumentumokat szúr be egy "adatcsatorna-tárolóba" egy adatfolyam szimulálásához. A változáscsatorna feldolgozója, amely a hírcsatornatárolóhoz van kötve, feldolgozza a bejövő módosításokat, és naplózza a dokumentum tartalmát. A processzor automatikusan kezeli a párhuzamos feldolgozás bérleteit.

Forráskód

Klónozhatja az SDK-példa-adattárat, és a következő helyen találhatja meg ezt a SampleChangeFeedProcessor.javapéldát:

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/

Útmutatás

  1. Konfigurálja a Java-alkalmazásokban az ChangeFeedProcessorOptions Azure Cosmos DB és az Azure Cosmos DB Java SDK V4 használatával. Ez ChangeFeedProcessorOptions alapvető beállításokat biztosít a változáscsatorna-feldolgozó viselkedésének szabályozásához az adatfeldolgozás során.

    options = new ChangeFeedProcessorOptions();
    options.setStartFromBeginning(false);
    options.setLeasePrefix("myChangeFeedDeploymentUnit");
    options.setFeedPollDelay(Duration.ofSeconds(5));
    options.setFeedPollThroughputControlConfig(throughputControlGroupConfig);
    
  2. Inicializálja a ChangeFeedProcessort a megfelelő konfigurációkkal, beleértve a gazdagép nevét, a hírcsatornatárolót, a bérlettárolót és az adatkezelési logikát. A start() metódus elindítja az adatfeldolgozást, lehetővé téve a bejövő adatváltozások egyidejű és valós idejű feldolgozását a hírcsatornatárolóból.

    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. Adja meg, hogy a delegált a metódussal kezelje a handleChanges() bejövő adatváltozásokat. A metódus feldolgozza a fogadott JsonNode-dokumentumokat a változáscsatornából. Fejlesztőként két lehetősége van a Változáscsatorna által biztosított JsonNode-dokumentum kezelésére. Az egyik lehetőség a dokumentum JsonNode-fájl formájában történő működtetése. Ez különösen akkor hasznos, ha nem rendelkezik egyetlen egységes adatmodellel az összes dokumentumhoz. A második lehetőség - átalakítja a JsonNode-t egy olyan POJO-vá, amelynek szerkezete megegyezik a JsonNode szerkezetével. Ezután a POJO-n is működhet.

    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. Hozza létre és futtassa a Java-alkalmazást. Az alkalmazás elindítja a Változáscsatorna-feldolgozót, mintadokumentumokat szúr be a hírcsatornatárolóba, és feldolgozzák a bejövő módosításokat.

Összegzés

Ebben az útmutatóban megtanulta, hogyan hozhat létre Java-alkalmazást az Azure Cosmos DB Java SDK V4 használatával, amely az Azure Cosmos DB for NoSQL-adatbázist használja, és a változáscsatorna-feldolgozót használja valós idejű adatfeldolgozáshoz. Ezt az alkalmazást kiterjesztheti az összetettebb használati esetek kezelésére, és robusztus, méretezhető és globálisan elosztott alkalmazásokat hozhat létre az Azure Cosmos DB használatával.

További erőforrások

Következő lépések

A változáscsatorna-becslésről az alábbi cikkekben olvashat bővebben: