كيفية إنشاء تطبيق Java يستخدم Azure Cosmos DB ل NoSQL وتغيير معالج الموجز

ينطبق على: NoSQL

Azure Cosmos DB هي خدمة قاعدة بيانات NoSQL مدارة بالكامل توفرها Microsoft. يسمح لك بإنشاء تطبيقات موزعة عالميا وقابلة للتطوير بدرجة عالية بسهولة. يرشدك هذا الدليل الإرشادي خلال عملية إنشاء تطبيق Java الذي يستخدم قاعدة بيانات Azure Cosmos DB ل NoSQL وينفذ Change Feed Processor لمعالجة البيانات في الوقت الفعلي. يتصل تطبيق Java ب Azure Cosmos DB ل NoSQL باستخدام Azure Cosmos DB Java SDK v4.

هام

هذا البرنامج التعليمي مخصص لـ Azure Cosmos DB Java SDK الإصدار 4 فقط. يرجى عرض ملاحظات إصدار Azure Cosmos DB Java SDK v4 ومستودع Maven ومعالج موجز التغيير في Azure Cosmos DB ودليل استكشاف الأخطاء وإصلاحها في Azure Cosmos DB Java SDK v4 لمزيد من المعلومات. إذا كنت تستخدم حاليّاً إصداراً أقدم من الإصدار 4، فراجع دليل الترحيل إلى حزمة تطوير برامج Java Azure Cosmos DB - الإصدار 4 للمساعدة على الترقية إلى الإصدار 4.

المتطلبات الأساسية

  • حساب Azure Cosmos DB: يمكنك إنشاؤه من مدخل Microsoft Azure أو يمكنك استخدام Azure Cosmos DB Emulator أيضا.

  • Java Development Environment: تأكد من تثبيت Java Development Kit (JDK) على جهازك مع إصدار 8 على الأقل.

  • Azure Cosmos DB Java SDK V4: يوفر الميزات الضرورية للتفاعل مع Azure Cosmos DB.

خلفية

يوفر موجز تغيير Azure Cosmos DB واجهة تعتمد على الحدث لتشغيل الإجراءات استجابة لإدراج المستند الذي يحتوي على العديد من الاستخدامات.

يتم الاهتمام بعمل إدارة أحداث موجز التغيير إلى حد كبير من خلال مكتبة معالج موجز التغيير المضمنة في SDK. هذه المكتبة قوية بما يكفي لتوزيع أحداث موجز التغيير بين العديد من العمال، إذا كان ذلك مطلوباً. كل ما عليك فعله هو تزويد مكتبة معالج موجز التغيير بمعاودة الاتصال.

يوضح هذا المثال البسيط لتطبيق Java معالجة البيانات في الوقت الحقيقي باستخدام Azure Cosmos DB ومعالج موجز التغيير. يدرج التطبيق مستندات نموذجية في "حاوية موجز" لمحاكاة دفق البيانات. يعالج معالج موجز التغيير، المرتبط بحاوية الموجز، التغييرات الواردة ويسجل محتوى المستند. يدير المعالج تلقائيا عقود الإيجار للمعالجة المتوازية.

كود المصدر

يمكنك استنساخ نموذج SDK repo والبحث عن هذا المثال في 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/

معاينة

  1. تكوين ChangeFeedProcessorOptions في تطبيق Java باستخدام Azure Cosmos DB وAzure Cosmos DB Java SDK V4. ChangeFeedProcessorOptions يوفر إعدادات أساسية للتحكم في سلوك معالج موجز التغيير أثناء معالجة البيانات.

    options = new ChangeFeedProcessorOptions();
    options.setStartFromBeginning(false);
    options.setLeasePrefix("myChangeFeedDeploymentUnit");
    options.setFeedPollDelay(Duration.ofSeconds(5));
    options.setFeedPollThroughputControlConfig(throughputControlGroupConfig);
    
  2. تهيئة ChangeFeedProcessor مع التكوينات ذات الصلة، بما في ذلك اسم المضيف وحاوية الموجز وحاوية التأجير ومنطق معالجة البيانات. يبدأ أسلوب start() معالجة البيانات، مما يتيح المعالجة المتزامنة وفي الوقت الحقيقي لتغييرات البيانات الواردة من حاوية الموجز.

    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. حدد المفوض يعالج تغييرات البيانات الواردة handleChanges() باستخدام الأسلوب . يعالج الأسلوب مستندات JsonNode المستلمة من موجز التغيير. بصفتك مطورا، لديك خياران للتعامل مع مستند JsonNode المقدم لك بواسطة موجز التغيير. أحد الخيارات هو العمل على المستند في شكل JsonNode. هذا أمر رائع خاصة إذا لم يكن لديك نموذج بيانات موحد واحد لجميع المستندات. الخيار الثاني - تحويل JsonNode إلى POJO له نفس بنية JsonNode. ثم يمكنك العمل على 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. إنشاء وتشغيل تطبيق Java. يبدأ التطبيق تشغيل معالج موجز التغيير، وإدراج نماذج المستندات في حاوية الموجز، ومعالجة التغييرات الواردة.

الخاتمة

في هذا الدليل، تعلمت كيفية إنشاء تطبيق Java باستخدام Azure Cosmos DB Java SDK V4 الذي يستخدم قاعدة بيانات Azure Cosmos DB ل NoSQL ويستخدم معالج موجز التغيير لمعالجة البيانات في الوقت الفعلي. يمكنك توسيع هذا التطبيق للتعامل مع حالات الاستخدام الأكثر تعقيدا وإنشاء تطبيقات قوية وقابلة للتطوير وموزعة عالميا باستخدام Azure Cosmos DB.

الموارد الإضافية

الخطوات التالية

يمكنك الآن المتابعة لمعرفة المزيد حول أداة تقدير موجز التغيير في المقالات التالية: