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ásra 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 v4 használatával.

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, a változáscsatorna-feldolgozót az Azure Cosmos DB-ben és az Azure Cosmos DB Java SDK v4 hibaelhárítási útmutatóját . Ha jelenleg a 4-es verziónál régebbi verziót használ, tekintse meg a Migrálás az Azure Cosmos DB Java SDK v4-re című útmutatót a v4-re való frissítéshez.

Előfeltételek

  • Azure Cosmos DB-fiók: létrehozhatja a Azure Portal, vagy használhatja az Azure Cosmos DB Emulatort is.

  • Java fejlesztői környezet: Győződjön meg arról, hogy legalább 8 verziójú Java Development Kit (JDK) van telepítve a gépen.

  • Azure Cosmos DB Java SDK V4: az Azure Cosmos DB használatához szükséges funkciókat biztosítja.

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ével kapcsolatos feladatokat 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 ahhoz, hogy szükség esetén több feldolgozó között is eloszthassa a változáscsatorna-eseményeket. Mindössze visszahívást kell adnia a változáscsatorna-kódtárnak.

Ez az egyszerű Java-alkalmazás az Azure Cosmos DB-vel és a változáscsatorna-feldolgozóval végzett valós idejű adatfeldolgozást mutatja be. Az alkalmazás mintadokumentumokat szúr be egy "hírcsatorna-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

Az SDK-példa-adattár klónozásával 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ásokat az ChangeFeedProcessorOptions Azure Cosmos DB és az Azure Cosmos DB Java SDK V4 használatával. A ChangeFeedProcessorOptions szolgáltatás 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));
    
  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())
        .buildChangeFeedProcessor();
    changeFeedProcessorInstance.start()
                               .subscribeOn(Schedulers.boundedElastic())
                               .subscribe();
    
  3. Adja meg, hogy a meghatalmazott kezeli-e a bejövő adatváltozásokat a handleChanges() metódus használatával. 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 formájában történő üzemeltetése. Ez különösen akkor hasznos, ha nem rendelkezik egységes adatmodellel az összes dokumentumhoz. A második lehetőség – alakítsa át a JsonNode-t egy olyan POJO-vá, amelynek struktúrája megegyezik a JsonNode-éval. 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

Ebből az útmutatóból megtudhatja, hogyan hozhat létre Egy 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 források

Következő lépések

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