التشغيل السريع: توجيه الأحداث المخصصة إلى دالة Azure باستخدام Event Grid
Azure Event Grid هي خدمة توجيه الأحداث للسحابة. Azure Functions هي واحدة من معالجات الأحداث المدعومة.
في هذا التشغيل السريع، يمكنك استخدام مدخل Microsoft Azure لإنشاء موضوع مخصص والاشتراك في الموضوع المخصص وتشغيل الحدث لعرض النتيجة. إرسال الأحداث إلى دالة Azure.
إذا لم يكن لديك اشتراك في Azure، فأنشئ حساب Azure مجاني قبل أن تبدأ.
إنشاء دالة باستخدام مشغل Event Grid باستخدام Visual Studio Code
في هذا القسم، يمكنك استخدام Visual Studio Code لإنشاء دالة باستخدام مشغل Event Grid.
المتطلبات الأساسية
- Visual Studio Code مثبت على أحد الأنظمة الأساسية المدعومة
- Azure Functions extension
إنشاء وظيفة
فتح Visual Studio Code.
في الشريط الأيسر، حدد Azure.
في الجزء الأيمن، في قسم WORKSPACE ، حدد الزر Azure Functions على شريط الأوامر، ثم حدد Create Function.
حدد مجلدا تريد حفظ التعليمات البرمجية للدالة فيه.
بالنسبة للأمر إنشاء مشروع جديد، للغة، حدد C#، ثم حدد مفتاح الإدخال Enter.
بالنسبة لوقت تشغيل .NET، حدد .NET 8.0 Isolated LTS، ثم حدد مفتاح Enter.
بالنسبة إلى Template للدالة، حدد مشغل Azure Event Grid، ثم حدد مفتاح Enter.
بالنسبة إلى اسم الدالة، أدخل اسما للدالة، ثم حدد المفتاح Enter.
بالنسبة لمساحة الاسم، أدخل اسما لمساحة اسم الدالة، ثم حدد المفتاح Enter.
افتح المشروع في النافذة الحالية أو نافذة جديدة، أو أضفه إلى مساحة عمل.
انتظر حتى يتم إنشاء الوظيفة. تظهر حالة إنشاء الدالة في الزاوية السفلية اليسرى.
عرض التعليمات البرمجية في ملف YourFunctionName.cs ، وتحديدا
Run
الأسلوب . يقوم بطباعة المعلومات باستخدام مسجل.[Function(nameof(MyEventGridTriggerFunc))] public void Run([EventGridTrigger] CloudEvent cloudEvent) { _logger.LogInformation("Event type: {type}, Event subject: {subject}", cloudEvent.Type, cloudEvent.Subject); }
نشر الدالة في Azure
حدد زر Azure على الشريط الأيسر إذا لم يكن جزء Azure مفتوحا بالفعل.
مرر مؤشر الماوس فوق مشروعك وحدد الزر Deploy to Azure .
في القائمة المنسدلة للوحة الأوامر، حدد + Create new function app، ثم حدد مفتاح Enter.
بالنسبة إلى Name، أدخل اسما فريدا عالميا لتطبيق الوظائف الجديد، ثم حدد مفتاح Enter.
بالنسبة إلى مكدس وقت التشغيل، حدد .NET 8 Isolated.
بالنسبة إلى الموقع لموارد Azure، حدد منطقة قريبة منك.
تظهر حالة إنشاء تطبيق الوظائف في علامة التبويب AZURE في الجزء السفلي. بعد إنشاء تطبيق الوظائف، سترى حالة نشر الدالة التي قمت بإنشائها محليا إلى تطبيق الوظائف.
بعد نجاح النشر، قم بتوسيع رسالة Create Function App succeeded وحدد Click لعرض المورد. تأكد من تحديد الدالة في قسم RESOURCES في الجزء الأيمن.
انقر بزر الماوس الأيمن فوق الدالة، ثم حدد فتح في المدخل.
سجل الدخول إلى Azure إذا لزم الأمر، وتأكد من ظهور صفحة Function App لوظيفتك.
في الجزء السفلي، حدد الدالة الخاصة بك.
قم بالتبديل إلى علامة التبويب سجلات . احتفظ بعلامة التبويب هذه مفتوحة حتى تتمكن من رؤية الرسائل المسجلة عند إرسال حدث إلى موضوع Event Grid لاحقا في هذا البرنامج التعليمي.
إنشاء موضوع مخصص
يوفر موضوع Event Grid نقطة نهاية معرّفة من قِبل المستخدم تقوم بنشر الأحداث إليها.
في علامة تبويب جديدة من نافذة مستعرض الويب، سجل الدخول إلى مدخل Microsoft Azure.
في شريط البحث في الموضوع، ابحث عن Event Grid Topics، ثم حدد Event Grid Topics.
في صفحة Topics ، حدد + Create في شريط الأوامر.
في جزء إنشاء موضوع ، اتبع الخطوات التالية:
للاشتراك: تحديد اشتراك Azure الخاص بك.
بالنسبة لمجموعة الموارد، حدد نفس مجموعة الموارد من الخطوات السابقة.
بالنسبة إلى الاسم، قم بتوفير اسم فريد للموضوع المخصص. يجب أن يكون اسم الموضوع فريدا لأن إدخال نظام أسماء المجالات (DNS) يمثله.
لا تستخدم الاسم الموضح في صورة المثال. بدلا من ذلك، قم بإنشاء اسمك الخاص. يجب أن يكون من 3 إلى 50 حرفا وأن يحتوي فقط على القيم a-z و A-Z و 0-9 و واصلة (
-
).بالنسبة إلى Region، حدد موقعا لموضوع Event Grid.
حدد "Review + create".
في علامة التبويب Review + create ، راجع الإعدادات ثم حدد Create.
بعد إنشاء الموضوع المخصص، حدد ارتباط Go to resource لفتح صفحة Event Grid Topic لهذا الموضوع.
الاشتراك في موضوع مخصص
يمكنك الاشتراك في موضوع Event Grid لإخبار Event Grid بالأحداث التي تريد تعقبها، ومكان إرسال الأحداث.
في صفحة Event Grid Topic لموضوعك المخصص، حدد + Event Subscription على شريط الأدوات.
في جزء إنشاء اشتراك حدث، اتبع الخطوات التالية:
بالنسبة إلى Name، أدخل اسما لاشتراك الحدث.
بالنسبة إلى Event Schema، حدد Cloud Event Schema v1.0.
تحديد «Azure Function» لنوع «Endpoint type».
حدد تكوين نقطة نهاية.
في جزء Select Azure Function ، اتبع الخطوات التالية:
بالنسبة إلى Subscription، حدد اشتراك Azure الذي يحتوي على الدالة .
بالنسبة لمجموعة الموارد، حدد مجموعة الموارد التي تحتوي على الدالة .
بالنسبة إلى Function app، حدد تطبيق الوظائف.
بالنسبة إلى Function، حدد الدالة في تطبيق الوظائف.
حدد Confirm Selection.
هذه الخطوة اختيارية، ولكن نوصي بها لسيناريوهات الإنتاج. في جزء إنشاء اشتراك حدث، انتقل إلى علامة التبويب ميزات إضافية وقم بتعيين قيم الحد الأقصى للأحداث لكل دفعة وحجم الدفعة المفضل بالكيلو بايت.
يمكن أن يمنحك الإرسال في دفعات إنتاجية عالية. بالنسبة إلى الحد الأقصى للأحداث لكل دفعة، قم بتعيين الحد الأقصى لعدد الأحداث التي سيتضمنها الاشتراك في دفعة. يعين حجم الدفعة المفضل بالكيلو بايت الحد الأعلى المفضل لحجم الدفعة، ولكن يمكن تجاوزه إذا كان حدث واحد أكبر من هذا الحد.
في جزء Create Event Subscription ، حدد Create.
إرسال حدث إلى الموضوع
الآن، قم بتشغيل حدث لمعرفة كيفية توزيع Event Grid للرسالة إلى نقطة النهاية الخاصة بك. استخدم إما Azure CLI أو Azure PowerShell لإرسال حدث اختبار إلى موضوعك المخصص. عادة ما يرسل تطبيق أو خدمة Azure بيانات الحدث.
يستخدم المثال الأول Azure CLI. يحصل على عنوان URL والمفتاح للموضوع المخصص ونموذج بيانات الحدث. استخدم اسم الموضوع المخصص لـtopicname
. يُنشئ نموذج بيانات الحدث.
يكون عنصر data
JSON هو حمولة الحدث. يمكن لأي JSON تم تشكيله بشكل جيد أن يذهب في هذا المجال. يمكنك أيضًا استخدام حقل الموضوع للتوجيه والتصفية المتقدمين.
ترسل أداة cURL طلبات HTTP. في هذه المقالة، يمكنك استخدام cURL لإرسال الحدث إلى الموضوع المخصص.
Azure CLI
حدد في مدخل Azure Cloud Shell. إذا كنت في وضع Azure PowerShell، فحدد التبديل إلى Bash.
topicname
تعيين المتغيرات وresourcegroupname
المستخدمة في الأوامر.استبدل
TOPICNAME
باسم موضوع Event Grid.topicname="TOPICNAME"
استبدل
RESOURCEGROUPNAME
باسم مجموعة موارد Azure التي تحتوي على موضوع Event Grid.resourcegroupname="RESOURCEGROUPNAME"
استخدم الأمر التالي للحصول على نقطة النهاية للموضوع. بعد نسخ الأمر ولصقه، قم بتحديث اسم الموضوع واسم مجموعة الموارد قبل تشغيله.
endpoint=$(az eventgrid topic show --name $topicname -g $resourcegroupname --query "endpoint" --output tsv)
استخدم الأمر التالي للحصول على مفتاح الموضوع المخصص. بعد نسخ الأمر ولصقه، قم بتحديث اسم الموضوع واسم مجموعة الموارد قبل تشغيله.
key=$(az eventgrid topic key list --name $topicname -g $resourcegroupname --query "key1" --output tsv)
انسخ العبارة التالية مع تعريف الحدث، ثم حدد مفتاح Enter.
event='[ {"id": "'"$RANDOM"'", "eventType": "recordInserted", "subject": "myapp/vehicles/motorcycles", "eventTime": "'`date +%Y-%m-%dT%H:%M:%S%z`'", "data":{ "make": "Ducati", "model": "Monster"},"dataVersion": "1.0"} ]'
قم بتشغيل الأمر cURL التالي لنشر الحدث:
curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
تأكد من ظهور الرسالة من الدالة في علامة التبويب Logs لوظيفتك في مدخل Microsoft Azure.
Azure PowerShell
يستخدم المثال الثاني Azure PowerShell لتنفيذ خطوات مماثلة.
في مدخل Microsoft Azure، حدد Cloud Shell (أو انتقل إلى صفحة Azure Cloud Shell). في الزاوية العلوية اليمنى من نافذة Cloud Shell، حدد التبديل إلى PowerShell.
اضبط المتغيرات التالية. بعد نسخ كل أمر ولصقه، قم بتحديث اسم الموضوع واسم مجموعة الموارد قبل تشغيله.
$resourceGroupName = "RESOURCEGROUPNAME"
$topicName = "TOPICNAME"
أجرِ الأوامر التالية للحصول على نقطة النهايةوالمفاتيح للموضوع:
$endpoint = (Get-AzEventGridTopic -ResourceGroupName $resourceGroupName -Name $topicName).Endpoint $keys = Get-AzEventGridTopicKey -ResourceGroupName $resourceGroupName -Name $topicName
قم بإعداد الحدث. انسخ هذه العبارات وقم بتشغيلها في نافذة Cloud Shell:
$eventID = Get-Random 99999 #Date format should be SortableDateTimePattern (ISO 8601) $eventDate = Get-Date -Format s #Construct the body by using a hash table $htbody = @{ id= $eventID eventType="recordInserted" subject="myapp/vehicles/motorcycles" eventTime= $eventDate data= @{ make="Ducati" model="Monster" } dataVersion="1.0" } #Use ConvertTo-Json to convert the event body from a hash table to a JSON object #Append square brackets to the converted JSON payload because they're expected in the event's JSON payload syntax $body = "["+(ConvertTo-Json $htbody)+"]"
Invoke-WebRequest
استخدم cmdlet لإرسال الحدث:Invoke-WebRequest -Uri $endpoint -Method POST -Body $body -Headers @{"aeg-sas-key" = $keys.Key1}
تأكد من ظهور الرسالة من الدالة في علامة التبويب Logs لوظيفتك في مدخل Microsoft Azure.
تحقق من أن الدالة تلقت الحدث
قمت بتشغيل الحدث، وأرسلت Event Grid الرسالة إلى نقطة النهاية التي قمت بتكوينها عند الاشتراك. الآن يمكنك التحقق مما إذا كانت الدالة قد تلقتها.
في صفحة Monitor لدالتك، ابحث عن استدعاء.
حدد استدعاء لعرض التفاصيل.
يمكنك أيضا استخدام علامة التبويب Logs في الجزء الأيسر لمشاهدة الرسائل المسجلة عند نشر الأحداث إلى نقطة نهاية الموضوع.
تنظيف الموارد
إذا كنت تخطط لمتابعة العمل مع هذا الحدث، فلا تنظف الموارد التي قمت بإنشائها في هذه المقالة. وإلا، احذف الموارد التي قمت بإنشائها في هذه المقالة.
في القائمة اليسرى، حدد Resource groups.
البديل هو تحديد All Services في القائمة اليسرى، ثم تحديد Resource groups.
حدد مجموعة الموارد لفتح الجزء للحصول على تفاصيله.
في شريط الأدوات، حدد حذف مجموعة الموارد.
تأكد من الحذف عن طريق إدخال اسم مجموعة الموارد، ثم حدد حذف.
أنشأت نافذة Cloud Shell مجموعة الموارد الأخرى التي تظهر في صفحة مجموعات الموارد واستخدمتها. احذف مجموعة الموارد هذه إذا كنت لا تخطط لاستخدام نافذة Cloud Shell لاحقا.
المحتوى ذو الصلة
الآن بعد أن عرفت كيفية إنشاء مواضيع مخصصة واشتراكات الأحداث، تعرف على المزيد حول ما يمكن أن تساعدك شبكة الأحداث على القيام به:
- حول شبكة الأحداث
- توجيه أحداث Azure Blob Storage إلى نقطة نهاية ويب مخصصة
- مراقبة تغييرات الجهاز الظاهري باستخدام Azure Event Grid وLogic Apps
- نقل البيانات الكبيرة إلى مستودع البيانات
للتعرف على نشر الأحداث إلى شبكة الأحداث واستهلاكها منها باستخدام لغات برمجة مختلفة، راجع العينات التالية: