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.
Azure Cosmos DB-fiók: létrehozhatja az Azure Portalról , 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: biztosítja az Azure Cosmos DB használatához szükséges funkciókat.
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.
Klónozhatja az SDK-példa-adattárat, és a következő helyen találhatja meg ezt a SampleChangeFeedProcessor.java
pé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/
Konfigurálja a Java-alkalmazásokban az
ChangeFeedProcessorOptions
Azure Cosmos DB és az Azure Cosmos DB Java SDK V4 használatával. EzChangeFeedProcessorOptions
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);
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();
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()"); }; }
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.
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.
A változáscsatorna-becslésről az alábbi cikkekben olvashat bővebben: