التشغيل السريع: توجيه الأحداث المخصصة إلى دالة Azure باستخدام Event Grid

Azure Event Grid هي خدمة توجيه الأحداث للسحابة. Azure Functions هي واحدة من معالجات الأحداث المدعومة.

في هذا التشغيل السريع، يمكنك استخدام مدخل Microsoft Azure لإنشاء موضوع مخصص والاشتراك في الموضوع المخصص وتشغيل الحدث لعرض النتيجة. إرسال الأحداث إلى دالة Azure.

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

إنشاء دالة باستخدام مشغل Event Grid باستخدام Visual Studio Code

في هذا القسم، يمكنك استخدام Visual Studio Code لإنشاء دالة باستخدام مشغل Event Grid.

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

إنشاء وظيفة

  1. فتح Visual Studio Code.

  2. في الشريط الأيسر، حدد Azure.

  3. في الجزء الأيمن، في قسم WORKSPACE ، حدد الزر Azure Functions على شريط الأوامر، ثم حدد Create Function.

    لقطة شاشة تعرض علامة تبويب Azure في Visual Studio Code مع أمر القائمة لإنشاء وظيفة.

  4. حدد مجلدا تريد حفظ التعليمات البرمجية للدالة فيه.

  5. بالنسبة للأمر إنشاء مشروع جديد، للغة، حدد C#‎، ثم حدد مفتاح الإدخال Enter.

    لقطة شاشة تعرض اختيار C Sharp كلغة لتطوير وظيفة Azure.

  6. بالنسبة لوقت تشغيل .NET، حدد .NET 8.0 Isolated LTS، ثم حدد مفتاح Enter.

  7. بالنسبة إلى Template للدالة، حدد مشغل Azure Event Grid، ثم حدد مفتاح Enter.

  8. بالنسبة إلى اسم الدالة، أدخل اسما للدالة، ثم حدد المفتاح Enter.

  9. بالنسبة لمساحة الاسم، أدخل اسما لمساحة اسم الدالة، ثم حدد المفتاح Enter.

  10. افتح المشروع في النافذة الحالية أو نافذة جديدة، أو أضفه إلى مساحة عمل.

  11. انتظر حتى يتم إنشاء الوظيفة. تظهر حالة إنشاء الدالة في الزاوية السفلية اليسرى.

    لقطة شاشة تعرض حالة إنشاء الدالة.

  12. عرض التعليمات البرمجية في ملف 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

  1. حدد زر Azure على الشريط الأيسر إذا لم يكن جزء Azure مفتوحا بالفعل.

  2. مرر مؤشر الماوس فوق مشروعك وحدد الزر Deploy to Azure .

    لقطة شاشة تعرض زر النشر إلى Azure.

  3. في القائمة المنسدلة للوحة الأوامر، حدد + Create new function app، ثم حدد مفتاح Enter.

  4. بالنسبة إلى Name، أدخل اسما فريدا عالميا لتطبيق الوظائف الجديد، ثم حدد مفتاح Enter.

  5. بالنسبة إلى مكدس وقت التشغيل، حدد .NET 8 Isolated.

  6. بالنسبة إلى الموقع لموارد Azure، حدد منطقة قريبة منك.

  7. تظهر حالة إنشاء تطبيق الوظائف في علامة التبويب AZURE في الجزء السفلي. بعد إنشاء تطبيق الوظائف، سترى حالة نشر الدالة التي قمت بإنشائها محليا إلى تطبيق الوظائف.

  8. بعد نجاح النشر، قم بتوسيع رسالة Create Function App succeeded وحدد Click لعرض المورد. تأكد من تحديد الدالة في قسم RESOURCES في الجزء الأيمن.

  9. انقر بزر الماوس الأيمن فوق الدالة، ثم حدد فتح في المدخل.

    لقطة شاشة تعرض التحديدات لفتح وظيفة في المدخل.

  10. سجل الدخول إلى Azure إذا لزم الأمر، وتأكد من ظهور صفحة Function App لوظيفتك.

  11. في الجزء السفلي، حدد الدالة الخاصة بك.

    لقطة شاشة تعرض تحديد وظيفة Azure في صفحة Function App.

  12. قم بالتبديل إلى علامة التبويب سجلات . احتفظ بعلامة التبويب هذه مفتوحة حتى تتمكن من رؤية الرسائل المسجلة عند إرسال حدث إلى موضوع Event Grid لاحقا في هذا البرنامج التعليمي.

    لقطة شاشة تعرض علامة التبويب Logs لوظيفة في مدخل Microsoft Azure.

إنشاء موضوع مخصص

يوفر موضوع Event Grid نقطة نهاية معرّفة من قِبل المستخدم تقوم بنشر الأحداث إليها.

  1. في علامة تبويب جديدة من نافذة مستعرض الويب، سجل الدخول إلى مدخل Microsoft Azure.

  2. في شريط البحث في الموضوع، ابحث عن Event Grid Topics، ثم حدد Event Grid Topics.

    لقطة شاشة تعرض تحديد مواضيع Event Grid.

  3. في صفحة Topics ، حدد + Create في شريط الأوامر.

    لقطة شاشة تعرض زر إنشاء موضوع Event Grid.

  4. في جزء إنشاء موضوع ، اتبع الخطوات التالية:

    1. للاشتراك: تحديد اشتراك Azure الخاص بك.

    2. بالنسبة لمجموعة الموارد، حدد نفس مجموعة الموارد من الخطوات السابقة.

    3. بالنسبة إلى الاسم، قم بتوفير اسم فريد للموضوع المخصص. يجب أن يكون اسم الموضوع فريدا لأن إدخال نظام أسماء المجالات (DNS) يمثله.

      لا تستخدم الاسم الموضح في صورة المثال. بدلا من ذلك، قم بإنشاء اسمك الخاص. يجب أن يكون من 3 إلى 50 حرفا وأن يحتوي فقط على القيم a-z و A-Z و 0-9 و واصلة (-).

    4. بالنسبة إلى Region، حدد موقعا لموضوع Event Grid.

    5. حدد "Review + create".

      لقطة شاشة تعرض جزء إنشاء موضوع.

    6. في علامة التبويب Review + create ، راجع الإعدادات ثم حدد Create.

  5. بعد إنشاء الموضوع المخصص، حدد ارتباط Go to resource لفتح صفحة Event Grid Topic لهذا الموضوع.

    لقطة شاشة تعرض صفحة موضوع مخصص لشبكة الأحداث.

الاشتراك في موضوع مخصص

يمكنك الاشتراك في موضوع Event Grid لإخبار Event Grid بالأحداث التي تريد تعقبها، ومكان إرسال الأحداث.

  1. في صفحة Event Grid Topic لموضوعك المخصص، حدد + Event Subscription على شريط الأدوات.

    لقطة شاشة تعرض زر إضافة اشتراك حدث على شريط الأدوات.

  2. في جزء إنشاء اشتراك حدث، اتبع الخطوات التالية:

    1. بالنسبة إلى Name، أدخل اسما لاشتراك الحدث.

    2. بالنسبة إلى Event Schema، حدد Cloud Event Schema v1.0.

    3. تحديد «Azure Function» لنوع «Endpoint type».

    4. حدد تكوين نقطة نهاية.

      لقطة شاشة تعرض قيم اشتراك الحدث.

    5. في جزء Select Azure Function ، اتبع الخطوات التالية:

      1. بالنسبة إلى Subscription، حدد اشتراك Azure الذي يحتوي على الدالة .

      2. بالنسبة لمجموعة الموارد، حدد مجموعة الموارد التي تحتوي على الدالة .

      3. بالنسبة إلى Function app، حدد تطبيق الوظائف.

      4. بالنسبة إلى Function، حدد الدالة في تطبيق الوظائف.

      5. حدد Confirm Selection.

        لقطة شاشة تعرض جزء تحديد دالة Azure تم إنشاؤها مسبقا.

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

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

      لقطة شاشة تعرض إعدادات الإرسال في دفعات لاشتراك حدث.

    7. في جزء Create Event Subscription ، حدد Create.

إرسال حدث إلى الموضوع

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

يستخدم المثال الأول Azure CLI. يحصل على عنوان URL والمفتاح للموضوع المخصص ونموذج بيانات الحدث. استخدم اسم الموضوع المخصص لـtopicname. يُنشئ نموذج بيانات الحدث.

يكون عنصر data JSON هو حمولة الحدث. يمكن لأي JSON تم تشكيله بشكل جيد أن يذهب في هذا المجال. يمكنك أيضًا استخدام حقل الموضوع للتوجيه والتصفية المتقدمين.

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

Azure CLI

  1. حدد في مدخل Azure Cloud Shell. إذا كنت في وضع Azure PowerShell، فحدد التبديل إلى Bash.

    لقطة شاشة تعرض نافذة Bash في Azure Cloud Shell.

  2. topicname تعيين المتغيرات و resourcegroupname المستخدمة في الأوامر.

    استبدل TOPICNAME باسم موضوع Event Grid.

    topicname="TOPICNAME"
    

    استبدل RESOURCEGROUPNAME باسم مجموعة موارد Azure التي تحتوي على موضوع Event Grid.

    resourcegroupname="RESOURCEGROUPNAME"
    
  3. استخدم الأمر التالي للحصول على نقطة النهاية للموضوع. بعد نسخ الأمر ولصقه، قم بتحديث اسم الموضوع واسم مجموعة الموارد قبل تشغيله.

    endpoint=$(az eventgrid topic show --name $topicname -g $resourcegroupname --query "endpoint" --output tsv)
    
  4. استخدم الأمر التالي للحصول على مفتاح الموضوع المخصص. بعد نسخ الأمر ولصقه، قم بتحديث اسم الموضوع واسم مجموعة الموارد قبل تشغيله.

    key=$(az eventgrid topic key list --name $topicname -g $resourcegroupname --query "key1" --output tsv)
    
  5. انسخ العبارة التالية مع تعريف الحدث، ثم حدد مفتاح 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"} ]'
    
  6. قم بتشغيل الأمر cURL التالي لنشر الحدث:

    curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
    
  7. تأكد من ظهور الرسالة من الدالة في علامة التبويب Logs لوظيفتك في مدخل Microsoft Azure.

    لقطة شاشة تعرض علامة التبويب Logs لوظيفة Azure.

Azure PowerShell

يستخدم المثال الثاني Azure PowerShell لتنفيذ خطوات مماثلة.

  1. في مدخل Microsoft Azure، حدد Cloud Shell (أو انتقل إلى صفحة Azure Cloud Shell). في الزاوية العلوية اليمنى من نافذة Cloud Shell، حدد التبديل إلى PowerShell.

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

    $resourceGroupName = "RESOURCEGROUPNAME"
    
    $topicName = "TOPICNAME"
    
  3. أجرِ الأوامر التالية للحصول على نقطة النهايةوالمفاتيح للموضوع:

    $endpoint = (Get-AzEventGridTopic -ResourceGroupName $resourceGroupName -Name $topicName).Endpoint
    $keys = Get-AzEventGridTopicKey -ResourceGroupName $resourceGroupName -Name $topicName
    
  4. قم بإعداد الحدث. انسخ هذه العبارات وقم بتشغيلها في نافذة 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)+"]"
    
  5. Invoke-WebRequest استخدم cmdlet لإرسال الحدث:

    Invoke-WebRequest -Uri $endpoint -Method POST -Body $body -Headers @{"aeg-sas-key" = $keys.Key1}
    
  6. تأكد من ظهور الرسالة من الدالة في علامة التبويب Logs لوظيفتك في مدخل Microsoft Azure.

    لقطة شاشة تعرض علامة التبويب Logs لوظيفة.

تحقق من أن الدالة تلقت الحدث

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

  1. في صفحة Monitor لدالتك، ابحث عن استدعاء.

    لقطة شاشة تعرض علامة التبويب

  2. حدد استدعاء لعرض التفاصيل.

    لقطة شاشة تعرض تفاصيل استدعاء.

    يمكنك أيضا استخدام علامة التبويب Logs في الجزء الأيسر لمشاهدة الرسائل المسجلة عند نشر الأحداث إلى نقطة نهاية الموضوع.

    لقطة شاشة تعرض طريقة عرض Monitor لوظيفة مع سجل.

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

إذا كنت تخطط لمتابعة العمل مع هذا الحدث، فلا تنظف الموارد التي قمت بإنشائها في هذه المقالة. وإلا، احذف الموارد التي قمت بإنشائها في هذه المقالة.

  1. في القائمة اليسرى، حدد Resource groups.

    لقطة شاشة تعرض صفحة مجموعات الموارد

    البديل هو تحديد All Services في القائمة اليسرى، ثم تحديد Resource groups.

  2. حدد مجموعة الموارد لفتح الجزء للحصول على تفاصيله.

  3. في شريط الأدوات، حدد حذف مجموعة الموارد.

  4. تأكد من الحذف عن طريق إدخال اسم مجموعة الموارد، ثم حدد حذف.

أنشأت نافذة Cloud Shell مجموعة الموارد الأخرى التي تظهر في صفحة مجموعات الموارد واستخدمتها. احذف مجموعة الموارد هذه إذا كنت لا تخطط لاستخدام نافذة Cloud Shell لاحقا.

الآن بعد أن عرفت كيفية إنشاء مواضيع مخصصة واشتراكات الأحداث، تعرف على المزيد حول ما يمكن أن تساعدك شبكة الأحداث على القيام به:

للتعرف على نشر الأحداث إلى شبكة الأحداث واستهلاكها منها باستخدام لغات برمجة مختلفة، راجع العينات التالية: