البرنامج التعليمي: استخدم التكوين الديناميكي باستخدام تحديث مدفوع في تطبيق Java Spring

تدعم مكتبة عميل Java Spring لتكوين التطبيق تحديث التكوين عند الطلب دون التسبب في إعادة تشغيل التطبيق. يمكن تكوين تطبيق للكشف عن التغييرات في App Configuration باستخدام أحد النهجين التاليين أو كليهما.

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

  • نموذج الإرسال: يستخدم هذا النموذج أحداث App Configuration للكشف عن التغييرات في التكوين. بمجرد إعداد تكوين التطبيق لإرسال أحداث رئيسية لتغيير القيمة مع Event Grid، مع Web Hook، يمكن للتطبيق استخدام هذه الأحداث لتحسين عدد الطلبات الإجمالي اللازم للحفاظ على تحديث التكوين.

يوضح هذا البرنامج التعليمي كيف يمكنك تنفيذ تحديثات التكوين الديناميكية في التعليمات البرمجية باستخدام تحديث الإرسال. يعتمد على التطبيق الذي تم تقديمه في البداية السريعة. قبل المتابعة، أكمل إنشاء تطبيق Java Spring مع تكوين التطبيق أولاً.

يمكنك استخدام أي محرر تعليمات برمجية للقيام بالخطوات الواردة في هذا البرنامج التعليمي. يعد Visual Studio Code خيارًا ممتازًا متاحًا على أنظمة التشغيل Windows، وmacOS، وLinux.

في هذا البرنامج التعليمي، تتعلم كيفية:

  • إعداد اشتراك لإرسال أحداث تغيير التكوين من App Configuration إلى Web Hook
  • نشر تطبيق Spring Boot في خدمة التطبيقات
  • قم بإعداد تطبيق Java Spring لتحديث تكوينه استجابة للتغييرات في App Configuration.
  • استخدم أحدث تكوين في التطبيق الخاص بك.

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

إذا لم يكن لديك اشتراك في Azure، فأنشئ حساب Azure مجاني قبل أن تبدأ.

إعداد تحديث مدفوع

  1. افتح Program.cs وحدث الملف بالتبعيات التالية.

    <dependency>
        <groupId>com.azure.spring</groupId>
        <artifactId>spring-cloud-azure-appconfiguration-config-web</artifactId>
    </dependency>
    
    <!-- Adds the Ability to Push Refresh -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    
    <dependencyManagement>
        <dependencies>
            <dependency>
            <groupId>com.azure.spring</groupId>
            <artifactId>spring-cloud-azure-dependencies</artifactId>
            <version>5.8.0</version>
            <type>pom</type>
            <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    
  2. إعداد نشر Maven App Service بحيث يمكن نشر التطبيق إلى خدمة Azure App Service عبر Maven.

    mvn com.microsoft.azure:azure-webapp-maven-plugin:2.5.0:config
    
  3. افتح bootstrap.properties وقم بتكوين Azure App Configuration Push Refresh.

    # Azure App Configuration Properties
    spring.cloud.azure.appconfiguration.stores[0].connection-string= ${AppConfigurationConnectionString}
    spring.cloud.azure.appconfiguration.stores[0].monitoring.enabled= true
    spring.cloud.azure.appconfiguration.stores[0].monitoring.refresh-interval= 30d
    spring.cloud.azure.appconfiguration.stores[0].monitoring.triggers[0].key= sentinel
    spring.cloud.azure.appconfiguration.stores[0].monitoring.push-notification.primary-token.name= myToken
    spring.cloud.azure.appconfiguration.stores[0].monitoring.push-notification.primary-token.secret= myTokenSecret
    
    management.endpoints.web.exposure.include= appconfiguration-refresh
    

يتم إضافة تأخير عشوائي قبل أن يتم وضع علامة على القيمة المخزنة مؤقتًا كمتسخة لتقليل الاختناق المحتمل. أقصى تأخير افتراضي قبل أن يتم وضع علامة على القيمة المخزنة مؤقتًا كمتسخة هو 30 ثانية.

إشعار

يجب تخزين اسم الرمز الأساسي في App Configuration كمفتاح، ومن ثم يجب أن يكون سر الرمز الأساسي محفوظًا كمرجع مفتاح App Configuration لأمان إضافي.

إنشاء التطبيق وتشغيله في خدمة التطبيق

تتطلب Web Hooks لـ Event Grid التحقق من الصحة عند الإنشاء. يمكنك التحقق من الصحة باتباع هذا الدليل أو عن طريق بدء تطبيقك مع تكوين مكتبة Azure App Configuration Spring Web بالفعل، والذي سيقوم بتسجيل تطبيقك لك. لاستخدام اشتراك حدث، اتبع الخطوات الموجودة في المقطعين التاليين.

  1. قم بتعيين متغير البيئة إلى سلسلة اتصال مثيل App Configuration:

    setx AppConfigurationConnectionString <connection-string-of-your-app-configuration-store>
    
  2. تحديث الخاص بك pom.xml ضمن azure-webapp-maven-plugin's configuration إضافة

    <appSettings>
      <AppConfigurationConnectionString>${AppConfigurationConnectionString}</AppConfigurationConnectionString>
    </appSettings>
    
  3. يوصى بتشغيل الأمر التالي لإنشاء تطبيق وحدة التحكم:

     mvn package
    
  4. بعد إنجاز الإنشاء بنجاح، يُرجى تشغيل الأمر التالي لتشغيل التطبيق محليًا:

    mvn azure-webapp:deploy
    

قم بإعداد اشتراك حدث

  1. افتح مورد App Configuration في مدخل Azure، ثم انقر فوق + Event Subscription في جزء Events.

    The events pane has an option to create new Subscriptions.

  2. أدخل اسمًا لـ Event Subscription وSystem Topic. يتم تعيين قيم أنواع الأحداث Key-Value المعدلة وKey-Value المحذوفة افتراضيًا، يمكن تغيير هذا بجانب استخدام علامة تبويب التصفية لاختيار أسباب إرسال حدث مدفوع الصحيحة.

    Events require a name, topic, and filters.

  3. حدد Endpoint Type كـ Web Hook، حدد Select an endpoint.

    Selecting Endpoint creates a new blade to enter the endpoint URI.

  4. نقطة النهاية هي URI التطبيق + "/actuator/appconfiguration-refresh?{your-token-name}={your-token-secret}". على سبيل المثال https://my-azure-webapp.azurewebsites.net/actuator/appconfiguration-refresh?myToken=myTokenSecret

  5. انقر على Create لإنشاء اشتراك الحدث. عندما يتم تحديد Create سيتم إرسال طلب تسجيل لـ Web Hook إلى تطبيقك. يتم استقبال هذا من قبل مكتبة عميل Azure App Configuration والتحقق من صحته، وإرجاع استجابة صالحة.

  6. انقر فوق Event Subscriptions في جزء Events للتحقق من أن الاشتراك تم إنشاؤه بنجاح.

    Web Hook shows up in a table on the bottom of the page.

إشعار

عند الاشتراك في تغييرات التكوين، يمكن استخدام عامل تصفية واحد أو أكثر لتقليل عدد الأحداث المرسلة إلى تطبيقك. يمكن تكوين هذه إما كعوامل تصفية اشتراك Event Grid. على سبيل المثال، يمكن استخدام عامل تصفية اشتراك فقط للاشتراك في الأحداث للتغييرات في مفتاح يبدأ بسلسلة محددة.

إشعار

إذا كان لديك مثيلات متعددة من التطبيق قيد التشغيل، يمكنك استخدام appconfiguration-refresh-bus نقطة النهاية التي تتطلب إعداد ناقل خدمة Azure، والتي تستخدم لإرسال رسالة إلى جميع مثيلات التطبيق الخاص بك لتحديث تكوينها. وهذا مفيد إذا كان لديك مثيلات متعددة من التطبيق الخاص بك قيد التشغيل وتريد التأكد من تحديث جميع المثيلات بأحدث تكوين. لا تتوفر نقطة النهاية هذه إلا إذا كان لديك spring-cloud-bus تبعية معها تم تكوينها. راجع وثائق ناقل خدمة Azure Spring Cloud Bus لمزيد من المعلومات. يجب إعداد اتصال ناقل الخدمة فقط وستتعامل مكتبة Azure App Configuration مع إرسال الرسائل وتلقيها.

التحقق من التطبيق واختباره

  1. بعد تشغيل تطبيقك، استخدم curl لاختبار تطبيقك، على سبيل المثال:

    curl -X GET https://my-azure-webapp.azurewebsites.net
    
  2. افتح مدخل Microsoft Azure وانتقل إلى مورد تكوين التطبيق المقترن بتطبيقك. حدد مستكشف التكوين تحت عمليات، ثم حدث قيم المفاتيح التالية:

    مفتاح القيمة
    application/config.message مرحبًا - مُحدَثة
  3. قم بتحديث صفحة المستعرض لعرض الرسالة الجديدة.

تنظيف الموارد

إذا كنت لا تريد مواصلة استخدام الموارد التي تم إنشاؤها في هذه المقالة، يوصى بحذف مجموعة الموارد التي أنشأتها هنا لتجنب الرسوم.

هام

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

  1. سجل الدخول إلى مدخل Microsoft Azure، وحدد Resource groups.
  2. في المربع تصفية حسب الاسم ، أدخل اسم مجموعة الموارد الخاصة بك.
  3. في قائمة النتائج، حدد اسم مجموعة الموارد لاستعراض نظرة عامة.
  4. حدد Delete resource group.
  5. يُطلب منك تأكيد حذف مجموعة الموارد. أدخل اسم مجموعة الموارد للتأكيد وحدد "Delete".

بعد بضع لحظات، يتم حذف مجموعة الموارد وكافة مواردها.

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

في هذا البرنامج التعليمي، قمت بتمكين تطبيق Java الخاص بك لتحديث إعدادات التكوين ديناميكيًا من App Configuration. للمزيد من الأسئلة، راجع الوثائق المرجعية حيث تتضمن كل التفاصيل حول كيفية عمل مكتبة Spring Cloud Azure App Configuration. لمعرفة كيفية استخدام هوية Azure المدارة لتبسيط الوصول إلى تكوين التطبيق، تابع البرنامج التعليمي التالي.