البرنامج التعليمي: استخدم التكوين الديناميكي باستخدام تحديث مدفوع في تطبيق 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 - إنشاء اشتراك مجاني
- مجموعة Java Development Kit (JDK) مدعمة مع إصدار 11.
- إصدار Apache Maven 3.0 أو أعلى.
- مخزن Azure App Configuration حالي.
إذا لم يكن لديك اشتراك في Azure، فأنشئ حساب Azure مجاني قبل أن تبدأ.
إعداد تحديث مدفوع
افتح 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>
إعداد نشر Maven App Service بحيث يمكن نشر التطبيق إلى خدمة Azure App Service عبر Maven.
mvn com.microsoft.azure:azure-webapp-maven-plugin:2.5.0:config
افتح 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 بالفعل، والذي سيقوم بتسجيل تطبيقك لك. لاستخدام اشتراك حدث، اتبع الخطوات الموجودة في المقطعين التاليين.
قم بتعيين متغير البيئة إلى سلسلة اتصال مثيل App Configuration:
setx AppConfigurationConnectionString <connection-string-of-your-app-configuration-store>
تحديث الخاص بك
pom.xml
ضمنazure-webapp-maven-plugin
'sconfiguration
إضافة<appSettings> <AppConfigurationConnectionString>${AppConfigurationConnectionString}</AppConfigurationConnectionString> </appSettings>
يوصى بتشغيل الأمر التالي لإنشاء تطبيق وحدة التحكم:
mvn package
بعد إنجاز الإنشاء بنجاح، يُرجى تشغيل الأمر التالي لتشغيل التطبيق محليًا:
mvn azure-webapp:deploy
قم بإعداد اشتراك حدث
افتح مورد App Configuration في مدخل Azure، ثم انقر فوق
+ Event Subscription
في جزءEvents
.أدخل اسمًا لـ
Event Subscription
وSystem Topic
. يتم تعيين قيم أنواع الأحداث Key-Value المعدلة وKey-Value المحذوفة افتراضيًا، يمكن تغيير هذا بجانب استخدام علامة تبويب التصفية لاختيار أسباب إرسال حدث مدفوع الصحيحة.حدد
Endpoint Type
كـWeb Hook
، حددSelect an endpoint
.نقطة النهاية هي URI التطبيق + "/actuator/appconfiguration-refresh?{your-token-name}={your-token-secret}". على سبيل المثال
https://my-azure-webapp.azurewebsites.net/actuator/appconfiguration-refresh?myToken=myTokenSecret
انقر على
Create
لإنشاء اشتراك الحدث. عندما يتم تحديدCreate
سيتم إرسال طلب تسجيل لـ Web Hook إلى تطبيقك. يتم استقبال هذا من قبل مكتبة عميل Azure App Configuration والتحقق من صحته، وإرجاع استجابة صالحة.انقر فوق
Event Subscriptions
في جزءEvents
للتحقق من أن الاشتراك تم إنشاؤه بنجاح.
إشعار
عند الاشتراك في تغييرات التكوين، يمكن استخدام عامل تصفية واحد أو أكثر لتقليل عدد الأحداث المرسلة إلى تطبيقك. يمكن تكوين هذه إما كعوامل تصفية اشتراك Event Grid. على سبيل المثال، يمكن استخدام عامل تصفية اشتراك فقط للاشتراك في الأحداث للتغييرات في مفتاح يبدأ بسلسلة محددة.
إشعار
إذا كان لديك مثيلات متعددة من التطبيق قيد التشغيل، يمكنك استخدام appconfiguration-refresh-bus
نقطة النهاية التي تتطلب إعداد ناقل خدمة Azure، والتي تستخدم لإرسال رسالة إلى جميع مثيلات التطبيق الخاص بك لتحديث تكوينها. وهذا مفيد إذا كان لديك مثيلات متعددة من التطبيق الخاص بك قيد التشغيل وتريد التأكد من تحديث جميع المثيلات بأحدث تكوين. لا تتوفر نقطة النهاية هذه إلا إذا كان لديك spring-cloud-bus
تبعية معها تم تكوينها. راجع وثائق ناقل خدمة Azure Spring Cloud Bus لمزيد من المعلومات. يجب إعداد اتصال ناقل الخدمة فقط وستتعامل مكتبة Azure App Configuration مع إرسال الرسائل وتلقيها.
التحقق من التطبيق واختباره
بعد تشغيل تطبيقك، استخدم curl لاختبار تطبيقك، على سبيل المثال:
curl -X GET https://my-azure-webapp.azurewebsites.net
افتح مدخل Microsoft Azure وانتقل إلى مورد تكوين التطبيق المقترن بتطبيقك. حدد مستكشف التكوين تحت عمليات، ثم حدث قيم المفاتيح التالية:
مفتاح القيمة application/config.message مرحبًا - مُحدَثة قم بتحديث صفحة المستعرض لعرض الرسالة الجديدة.
تنظيف الموارد
إذا كنت لا تريد مواصلة استخدام الموارد التي تم إنشاؤها في هذه المقالة، يوصى بحذف مجموعة الموارد التي أنشأتها هنا لتجنب الرسوم.
هام
حذف مجموعة الموارد لا يمكن التراجع عنه. يتم حذف مجموعة الموارد وجميع الموارد المضمنة فيها نهائيًا. تأكد من عدم حذفك للموارد أو مجموعة المورد الخاطئة عن غير قصد. في حالة إنشاء الموارد لهذه المقالة داخل مجموعة موارد تشتمل على موارد أخرى تريد الاحتفاظ بها، احذف كل مورد على حدة من الجزء الخاص به بدلًا من حذف مجموعة الموارد.
- سجل الدخول إلى مدخل Microsoft Azure، وحدد Resource groups.
- في المربع تصفية حسب الاسم ، أدخل اسم مجموعة الموارد الخاصة بك.
- في قائمة النتائج، حدد اسم مجموعة الموارد لاستعراض نظرة عامة.
- حدد Delete resource group.
- يُطلب منك تأكيد حذف مجموعة الموارد. أدخل اسم مجموعة الموارد للتأكيد وحدد "Delete".
بعد بضع لحظات، يتم حذف مجموعة الموارد وكافة مواردها.
الخطوات التالية
في هذا البرنامج التعليمي، قمت بتمكين تطبيق Java الخاص بك لتحديث إعدادات التكوين ديناميكيًا من App Configuration. للمزيد من الأسئلة، راجع الوثائق المرجعية حيث تتضمن كل التفاصيل حول كيفية عمل مكتبة Spring Cloud Azure App Configuration. لمعرفة كيفية استخدام هوية Azure المدارة لتبسيط الوصول إلى تكوين التطبيق، تابع البرنامج التعليمي التالي.