إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
في هذه المقالة، ستقوم بتطوير وبناء ونشر تطبيق Java بلا خادم إلى Azure Functions باستخدام Quarkus. تستخدم هذه المقالة Quarkus Funqy ودعمه المضمن لمشغل HTTP وظائف Azure ل Java. يمنحك استخدام Quarkus مع Azure Functions قوة نموذج برمجة Quarkus مع مقياس ومرونة Azure Functions. عند الانتهاء، ستقوم بتشغيل تطبيقات Quarkus بلا خادم على Azure Functions وتستمر في مراقبة تطبيقك على Azure.
المتطلبات الأساسية
- تم تثبيت Azure CLI على الكمبيوتر الخاص بك.
- حساب Azure. إذا لم يكن لديك حساب Azure، فأنشئ حساباً مجانياً قبل أن تبدأ.
-
Java JDK 17 مع
JAVA_HOMEتكوين بشكل مناسب. تمت كتابة هذه المقالة مع Java 17 في الاعتبار، ولكن Azure Functions وQuarkus يدعمان أيضا الإصدارات القديمة من Java. - أباتشي مافن 3.8.1+.
إنشاء مشروع التطبيق
استخدم الأمر التالي لاستنساخ نموذج مشروع Java لهذه المقالة. العينة متاحة على GitHub.
git clone https://github.com/Azure-Samples/quarkus-azure
cd quarkus-azure
git checkout 2023-01-10
cd functions-quarkus
إذا رأيت رسالة حول وجودك في حالة HEAD منفصلة، فهذه الرسالة آمنة للتجاهل. نظرا لأن هذه المقالة لا تتطلب أي تثبيتات، فإن حالة HEAD المنفصلة مناسبة.
استكشف نموذج الدالة. افتح الملف functions-quarkus/src/main/java/io/quarkus/GreetingFunction.java .
قم بتشغيل الأمر التالي.
@Funq يجعل التعليق التوضيحي الأسلوب الخاص بك (في هذه الحالة، funqyHello) دالة بلا خادم.
@Funq
public String funqyHello() {
return "hello funqy";
}
تحتوي Azure Functions Java على مجموعة خاصة بها من التعليقات التوضيحية الخاصة ب Azure، ولكن هذه التعليقات التوضيحية ليست ضرورية عند استخدام Quarkus على Azure Functions بسعة بسيطة كما نفعل هنا. لمزيد من المعلومات حول التعليقات التوضيحية ل Azure Functions Java، راجع دليل مطور Azure Functions Java.
ما لم تحدد خلاف ذلك، يكون اسم الدالة هو نفس اسم الأسلوب. يمكنك أيضا استخدام الأمر التالي لتعريف اسم الدالة مع معلمة إلى التعليق التوضيحي:
@Funq("alternateName")
public String funqyHello() {
return "hello funqy";
}
الاسم مهم. يصبح جزءا من REST URI لاستدعاء الدالة، كما هو موضح لاحقا في المقالة.
اختبِر الدالة محليًا
استخدم mvn لتشغيل وضع تطوير Quarkus على المحطة الطرفية المحلية. يتيح تشغيل Quarkus بهذه الطريقة إعادة التحميل المباشر مع التحويل البرمجي للخلفية. عند تعديل ملفات Java و/أو ملفات الموارد وتحديث المستعرض الخاص بك، ستصبح هذه التغييرات سارية المفعول تلقائيا.
يؤدي تحديث المستعرض إلى إجراء مسح ضوئي لمساحة العمل. إذا اكتشف الفحص أي تغييرات، تتم إعادة تحويل ملفات Java وإعادة نشر التطبيق. خدمات التطبيق المعاد توزيعها الطلب. إذا كانت هناك أي مشاكل في التحويل البرمجي أو النشر، فستعلمك صفحة الخطأ.
في الإجراء التالي، استبدل yourResourceGroupName باسم مجموعة موارد. يجب أن تكون أسماء تطبيقات الوظائف فريدة عالميا عبر جميع Azure. يجب أن تكون أسماء مجموعة الموارد فريدة عالميا داخل الاشتراك. تحقق هذه المقالة التفرد الضروري عن طريق إلحاق اسم مجموعة الموارد باسم الدالة. ضع في اعتبارك إلحاق معرف فريد بأي أسماء تقوم بإنشائها يجب أن تكون فريدة. ومن التقنيات المفيدة استخدام الأحرف الأولى من اسمك متبوعا بتاريخ اليوم بالتنسيق mmdd .
مجموعة الموارد ليست ضرورية لهذا الجزء من الإرشادات، ولكنها مطلوبة لاحقا. للتبسيط، يتطلب منك مشروع Maven تحديد الخاصية .
استدعاء وضع تطوير Quarkus:
mvn -DskipTests -DresourceGroup=<yourResourceGroupName> quarkus:devيجب أن يبدو الإخراج كما يلي:
... --/ __ \/ / / / _ | / _ \/ //_/ / / / __/ -/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \ --\___\_\____/_/ |_/_/|_/_/|_|\____/___/ INFO [io.quarkus] (Quarkus Main Thread) quarkus-azure-function 1.0-SNAPSHOT on JVM (powered by Quarkus xx.xx.xx.) started in 1.290s. Listening on: http://localhost:8080 INFO [io.quarkus] (Quarkus Main Thread) Profile dev activated. Live Coding activated. INFO [io.quarkus] (Quarkus Main Thread) Installed features: [cdi, funqy-http, smallrye-context-propagation, vertx] -- Tests paused Press [r] to resume testing, [o] Toggle test output, [:] for the terminal, [h] for more options>الوصول إلى الدالة باستخدام الأمر على
CURLالمحطة الطرفية المحلية:curl localhost:8080/api/funqyHelloيجب أن يبدو الإخراج كما يلي:
"hello funqy"
إضافة إدخال التبعية إلى الدالة
توفر التقنية المفتوحة القياسية Jakarta EE Contexts and Dependency Injection (CDI) حقن التبعية في Quarkus.
إضافة دالة جديدة تستخدم إدخال التبعية.
إنشاء ملف GreetingService.java في الدليل functions-quarkus/src/main/java/io/quarkus. استخدم التعليمات البرمجية التالية كتعلم برمجية المصدر للملف:
package io.quarkus; import javax.enterprise.context.ApplicationScoped; @ApplicationScoped public class GreetingService { public String greeting(String name) { return "Welcome to build Serverless Java with Quarkus on Azure Functions, " + name; } }حفظ الملف.
GreetingServiceهو منتقاة قابلة للحقن تنفذ أسلوباgreeting(). يقوم الأسلوب بإرجاع رسالة سلسلةWelcome...مع معلمةname.افتح ملف functions-quarkus/src/main/java/io/quarkus/GreetingFunction.java الموجود. استبدل الفئة بالتعليمات البرمجية التالية لإضافة حقل جديد
gServiceوالأسلوبgreeting:package io.quarkus; import javax.inject.Inject; import io.quarkus.funqy.Funq; public class GreetingFunction { @Inject GreetingService gService; @Funq public String greeting(String name) { return gService.greeting(name); } @Funq public String funqyHello() { return "hello funqy"; } }حفظ الملف.
الوصول إلى الدالة الجديدة
greetingباستخدام الأمر علىcurlالمحطة الطرفية المحلية:curl -d '"Dan"' -X POST localhost:8080/api/greetingيجب أن يبدو الإخراج كما يلي:
"Welcome to build Serverless Java with Quarkus on Azure Functions, Dan"هام
يسمح لك Live Coding (يسمى أيضا وضع التطوير) بتشغيل التطبيق وإجراء تغييرات بسرعة. سيقوم Quarkus تلقائيا بإعادة التحويل البرمجي وإعادة تحميل التطبيق عند إجراء التغييرات. هذا نمط قوي وفعال لتطوير ستستخدمه خلال هذه المقالة.
قبل الانتقال إلى الخطوة التالية، أوقف وضع تطوير Quarkus عن طريق تحديد Ctrl+C.
توزيع التطبيق على Azure
إذا لم تكن قد قمت بتسجيل الدخول بالفعل، فسجل الدخول إلى اشتراك Azure باستخدام الأمر التالي az login واتبع التوجيهات التي تظهر على الشاشة:
az loginإشعار
إذا كان العديد من مستأجري Azure مقترنين ببيانات اعتماد Azure، فيجب عليك تحديد المستأجر الذي تريد تسجيل الدخول إليه. يمكنك القيام بذلك باستخدام
--tenantالخيار . على سبيل المثال:az login --tenant contoso.onmicrosoft.com.متابعة العملية في مستعرض الويب. إذا لم يتوفر مستعرض ويب أو إذا فشل فتح مستعرض الويب، فاستخدم تدفق التعليمات البرمجية للجهاز مع
az login --use-device-code.بعد تسجيل الدخول بنجاح، يجب أن يبدو الإخراج على المحطة الطرفية المحلية مشابها للآتي:
xxxxxxx-xxxxx-xxxx-xxxxx-xxxxxxxxx 'Microsoft' [ { "cloudName": "AzureCloud", "homeTenantId": "xxxxxx-xxxx-xxxx-xxxx-xxxxxxx", "id": "xxxxxx-xxxx-xxxx-xxxx-xxxxxxxx", "isDefault": true, "managedByTenants": [], "name": "Contoso account services", "state": "Enabled", "tenantId": "xxxxxxx-xxxx-xxxx-xxxxx-xxxxxxxxxx", "user": { "name": "user@contoso.com", "type": "user" } } ]إنشاء الوظائف ونشرها إلى Azure.
الذي أنشأته في الخطوة السابقة . يؤدي التشغيل
mvn installإلى إنشاء ملفات التكوين ودليل التقسيم المرحلي الذيazure-functions-maven-pluginيتطلبه. بالنسبة إلىyourResourceGroupName، استخدم القيمة التي استخدمتها سابقا.mvn clean install -DskipTests -DtenantId=<your tenantId from shown previously> -DresourceGroup=<yourResourceGroupName> azure-functions:deployأثناء النشر، سجل الدخول إلى Azure.
azure-functions-maven-pluginيتم تكوين المكون الإضافي لمطالبة تسجيل الدخول إلى Azure في كل مرة يتم فيها نشر المشروع. أثناء الإنشاء، يظهر إخراج مشابه للآتي:[INFO] Auth type: DEVICE_CODE To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code AXCWTLGMP to authenticate.قم بما يقوله الإخراج وقم بالمصادقة على Azure باستخدام المتصفح ورمز الجهاز المتوفر. تتوفر العديد من خيارات المصادقة والتكوين الأخرى. تتوفر الوثائق المرجعية الكاملة ل
azure-functions-maven-pluginفي وظائف Azure: تفاصيل التكوين.بعد المصادقة، يجب أن يستمر البناء وينتهي. تأكد من أن الإخراج يتضمن
BUILD SUCCESSبالقرب من النهاية.Successfully deployed the artifact to https://quarkus-demo-123451234.azurewebsites.netيمكنك أيضا العثور على عنوان URL لتشغيل دالتك على Azure في سجل الإخراج:
[INFO] HTTP Trigger Urls: [INFO] quarkus : https://quarkus-azure-functions-http-archetype-20220629204040017.azurewebsites.net/api/{*path}سيستغرق النشر بعض الوقت حتى ينتهي. في هذه الأثناء، دعنا نستكشف Azure Functions في مدخل Microsoft Azure.
الوصول إلى الدالة بلا خادم ومراقبتها على Azure
سجل الدخول إلى المدخل وتأكد من تحديد نفس المستأجر والاشتراك الذي استخدمته في Azure CLI.
اكتب تطبيق الوظائف على شريط البحث في أعلى مدخل Microsoft Azure وحدد مفتاح الإدخال Enter. يجب نشر تطبيق الوظائف الخاص بك وعرضه بالاسم
<yourResourceGroupName>-function-quarkus.
حدد تطبيق الوظائف لعرض معلومات مفصلة، مثل الموقع والاشتراك وعنوان URL والمقاييس وخطة خدمة التطبيقات. ثم حدد قيمة URL .
تأكد من أن صفحة الترحيب تشير إلى أن تطبيق الوظائف الخاص بك "قيد التشغيل".
استدعاء الدالة
greetingباستخدام الأمر التاليcurlعلى المحطة الطرفية المحلية.هام
استبدل
YOUR_HTTP_TRIGGER_URLبعنوان URL للدالة الخاصة بك التي تجدها في مدخل Azure أو الإخراج.curl -d '"Dan on Azure"' -X POST https://YOUR_HTTP_TRIGGER_URL/api/greetingيجب أن يبدو الإخراج مشابهًا لما يلي:
"Welcome to build Serverless Java with Quarkus on Azure Functions, Dan on Azure"يمكنك أيضا الوصول إلى الدالة الأخرى (
funqyHello) باستخدام الأمر التاليcurl:curl https://YOUR_HTTP_TRIGGER_URL/api/funqyHelloيجب أن يكون الإخراج هو نفسه ما لاحظته سابقا:
"hello funqy"إذا كنت ترغب في ممارسة إمكانية المقاييس الأساسية في مدخل Microsoft Azure، فحاول استدعاء الدالة ضمن حلقة shell
for:for i in {1..100}; do curl -d '"Dan on Azure"' -X POST https://YOUR_HTTP_TRIGGER_URL/api/greeting; doneبعد فترة من الوقت، سترى بعض بيانات المقاييس في المدخل.
الآن بعد أن فتحت دالة Azure في المدخل، إليك المزيد من الميزات التي يمكنك الوصول إليها من المدخل:
- مراقبة أداء دالة Azure. لمزيد من المعلومات، راجع مراقبة وظائف Azure.
- استكشاف بيانات تتبع الاستخدام. لمزيد من المعلومات، راجع تحليل بيانات تتبع الاستخدام لوظائف Azure في Application Insights.
- إعداد التسجيل. لمزيد من المعلومات، راجع تمكين سجلات تنفيذ الدفق في Azure Functions.
تنظيف الموارد
إذا لم تكن بحاجة إلى هذه الموارد، يمكنك حذفها عن طريق تشغيل الأمر التالي:
az group delete --name <yourResourceGroupName> --yes
الخطوات التالية
في هذا المقال، ستتعلم كيفية إجراء ما يلي:
- تشغيل وضع تطوير Quarkus.
- نشر تطبيق Funqy إلى وظائف Azure باستخدام
azure-functions-maven-plugin. - فحص أداء الدالة في المدخل.
لمعرفة المزيد حول Azure Functions و Quarkus، راجع المقالات والمراجع التالية: