مشاركة عبر


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

يحتوي تكوين التطبيق على مكتبتين لـ Spring.

  • spring-cloud-azure-appconfiguration-config يتطلب Spring Boot ويعتمد على spring-cloud-context.
  • spring-cloud-azure-appconfiguration-config-webيتطلب Spring Web جنبًا إلى جنب مع Spring Boot، ويضيف أيضًا دعمًا للتحقق التلقائي من تحديث التكوين.

تدعم المكتبتان التشغيل اليدوي للتحقق من قيم التكوين المحدَّثة.

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

spring-cloud-azure-appconfiguration-config-webيتم تشغيل التحديث التلقائي على أساس النشاط وتحديدًا ServletRequestHandledEvent لـ Spring Web. ServletRequestHandledEvent إذا لم يتم تشغيل ، spring-cloud-azure-appconfiguration-config-webلا يقوم التحديث التلقائي بتشغيل تحديث حتى إذا انتهت صلاحية وقت انتهاء صلاحية ذاكرة التخزين المؤقت.

استخدام التحديث اليدوي

لاستخدام التحديث التلقائي، ابدأ بتطبيق Spring Boot الذي يستخدم «تكوين التطبيق» مثل التطبيق الذي تنشئه باتباع تشغيل Spring Boot السريع لتكوين التطبيق.

يعرض AppConfigurationRefreshتكوين التطبيق ، الذي يتحقق مما إذا كان الفاصل الزمني للتحديث قد مر. إذا مر الفاصل الزمني للتحديث، فإنه يقوم بتشغيل تحديث.

  1. لاستخدام AppConfigurationRefresh، قم بتحديث HelloController.

    import com.azure.spring.cloud.config.AppConfigurationRefresh;
    
    @RestController
    public class HelloController {
        private final MessageProperties properties;
    
        @Autowired(required = false)
        private AppConfigurationRefresh refresh;
    
        public HelloController(MessageProperties properties) {
            this.properties = properties;
        }
    
        @GetMapping
        public String getMessage() throws InterruptedException, ExecutionException {
            if (refresh != null) {
                refresh.refreshConfigurations();
            }
            return "Message: " + properties.getMessage();
        }
    }
    

    AppConfigurationRefresh refreshConfigurations() ترجع هذه الدالة Mono القيمة true إذا تم تشغيل تحديث، وخطأ إذا لم يكن الأمر صحيحا. خطأ يعني إما أن وقت انتهاء صلاحية ذاكرة التخزين المؤقت لم تنته صلاحيته، أو لم يكن هناك تغيير، أو أن مؤشر ترابط آخر يتحقق حاليا من وجود تحديث.

    إشعار

    بالنسبة للمكتبات مثل Spring WebFlux التي تتطلب مكالمات غير محظورة، refreshConfigurations() يجب تضمينها في مؤشر ترابط حيث يتطلب تحميل التكوينات استدعاء حظر.

    new Thread(() -> refresh.refreshConfigurations()).start();
    
  2. لتمكين تحديث bootstrap.propertiesالتحديث:

    spring.cloud.azure.appconfiguration.stores[0].monitoring.enabled=true
    spring.cloud.azure.appconfiguration.stores[0].monitoring.refresh-interval= 30s
    spring.cloud.azure.appconfiguration.stores[0].monitoring.triggers[0].key=sentinel
    
  3. افتح مدخل Microsoft Azure وانتقل إلى مورد تكوين التطبيق المقترن بتطبيقك. حدد مستكشف التكوين تحت العمليات وأنشئ زوجًا جديدًا لقيمة المفتاح عن طريق تحديد + إنشاء>قيمة مفتاح لإضافة المعلمات التالية:

    مفتاح القيمة
    رقيب 1

    اترك التسمية ونوع المحتوى فارغَين في الوقت الحالي.

  4. حدد تطبيق.

  5. قم ببناء تطبيق Spring Boot الخاص بك مع Maven وتشغيله.

    mvn clean package
    mvn spring-boot:run
    
  6. افتح نافذة مستعرض، ثم انتقل إلى عنوان URL: http://localhost:8080. ترى الرسالة المقترنة بمفتاحك.

    يمكنك أيضًا استخدام curl لاختبار تطبيقك، على سبيل المثال:

    curl -X GET http://localhost:8080/
    
  7. لاختبار التكوين الديناميكي، افتح مدخل Azure App Configuration المقترن بتطبيقك. حدد مستكشف التكوين، ثم قم بتحديث قيمة مفتاحك المعروضة، على سبيل المثال:

    مفتاح القيمة
    /application/config.message مرحبًا - مُحدَثة
  8. قم بتحديث مفتاح الرقيب الذي قمت بإنشائه سابقًا إلى قيمة جديدة. يؤدي هذا التغيير إلى تشغيل التطبيق لتحديث جميع مفاتيح التكوين بمجرد تمرير الفاصل الزمني للتحديث.

    مفتاح القيمة
    رقيب 2
  9. قم بتحديث صفحة المستعرض مرتين لعرض الرسالة الجديدة. في المرة الأولى التي يتم فيها تشغيل التحديث، تعمل الثانية على تحميل التغييرات.

    إشعار

    تتحقق المكتبة من التغييرات فقط بعد مرور الفاصل الزمني للتحديث. إذا لم يمر الفاصل الزمني للتحديث، فلن يتحقق من وجود تغييرات. انتظر حتى يمر الفاصل الزمني، ثم قم بتشغيل التحقق من التحديث.

استخدام التحديث التلقائي

لاستخدام التحديث التلقائي، ابدأ بتطبيق Spring Boot الذي يستخدم تكوين التطبيق، مثل التطبيق الذي تنشئه باتباع تشغيل Spring Boot السريع لتكوين التطبيق.

ثم، افتح ملف pom.xml في محرر نص، ثم أضف <dependency> لـ spring-cloud-azure-appconfiguration-config-web باستخدام التعليمات البرمجية التالية.

<dependency>
    <groupId>com.azure.spring</groupId>
    <artifactId>spring-cloud-azure-appconfiguration-config-web</artifactId>
    <version>6.0.0</version>
</dependency>
  1. لتمكين تحديث application.propertiesالتحديث:

    spring.cloud.azure.appconfiguration.stores[0].monitoring.enabled=true
    spring.cloud.azure.appconfiguration.stores[0].monitoring.refresh-interval= 30s
    spring.cloud.azure.appconfiguration.stores[0].monitoring.triggers[0].key=sentinel
    
  2. افتح مدخل Microsoft Azure وانتقل إلى مورد تكوين التطبيق المقترن بتطبيقك. حدد مستكشف التكوين تحت العمليات وأنشئ زوجًا جديدًا لقيمة المفتاح عن طريق تحديد + إنشاء>قيمة مفتاح لإضافة المعلمات التالية:

    مفتاح القيمة
    رقيب 1

    اترك التسمية ونوع المحتوى فارغَين في الوقت الحالي.

  3. حدد تطبيق.

  4. قم ببناء تطبيق Spring Boot الخاص بك مع Maven وتشغيله.

    mvn clean package
    mvn spring-boot:run
    
  5. افتح نافذة مستعرض، ثم انتقل إلى عنوان URL: http://localhost:8080. ترى الآن الرسالة المقترنة بمفتاحك.

    يمكنك أيضًا استخدام curl لاختبار تطبيقك، على سبيل المثال:

    curl -X GET http://localhost:8080/
    
  6. لاختبار التكوين الديناميكي، افتح مدخل Azure App Configuration المقترن بتطبيقك. حدد مستكشف التكوين، ثم قم بتحديث قيمة مفتاحك المعروضة، على سبيل المثال:

    مفتاح القيمة
    /application/config.message مرحبًا - مُحدَثة
  7. قم بتحديث مفتاح الرقيب الذي قمت بإنشائه سابقًا إلى قيمة جديدة. يؤدي هذا التغيير إلى تشغيل التطبيق لتحديث جميع مفاتيح التكوين بمجرد تمرير الفاصل الزمني للتحديث.

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

    إشعار

    تتحقق المكتبة من التغييرات فقط بعد مرور الفاصل الزمني للتحديث. إذا لم يمر الفاصل الزمني للتحديث، فلن يتحقق من وجود تغييرات. انتظر حتى يمر الفاصل الزمني، ثم قم بتشغيل التحقق من التحديث.

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

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