توجيه الأحداث المخصصة إلى نقطة نهاية الويب باستخدام مدخل Azure وAzure Event Grid

شبكة الأحداث هي خدمة مدارة بالكامل تمكنك من إدارة الأحداث بسهولة عبر العديد من خدمات وتطبيقات Azure المختلفة. إنها تبسط بناء التطبيقات المستندة إلى الحدث وبلا خادم. للحصول على نظرة عامة عن الخدمة، راجع نظرة عامة على Event Grid.

في هذه المقالة، يمكنك استخدام مدخل Azure للقيام بالمهام التالية:

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

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

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

تسجيل موفر موارد شبكة الأحداث

ما لم تكن قد استخدمت Event Grid من قبل، فستحتاج إلى تسجيل مزود موارد Event Grid. إذا كنت قد استخدمت Event Grid من قبل، فانتقل إلى القسم التالي.

في مدخل Microsoft Azure، قم بالخطوات التالية:

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

  2. حدد subscription الذي تريد استخدامه لـ Event Grid من قائمة الاشتراك.

  3. في صفحة Subscription، حدد Resource providers ضمن Settings في القائمة اليسرى.

  4. ابحث عن Microsoft.EventGrid، وتأكد من أن الحالة غير مسجلة.

  5. حدد Microsoft.EventGrid في قائمة الموفرين.

  6. حدد Register في شريط الأوامر.

    صورة توضح تسجيل موفر Microsoft.EventGrid مع اشتراك Azure.

  7. قم بالتحديث للتأكد من تغيير حالة Microsoft.EventGrid إلى Registered.

    صورة توضح التسجيل الناجح لمزود Microsoft.EventGrid مع اشتراك Azure.

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

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

  1. تسجيل الدخول إلى مدخل Azure.

  2. في شريط البحث في الموضوع، اكتب مواضيع شبكة الأحداث، ثم حدد مواضيع شبكة الأحداث من القائمة المنسدلة.

    لقطة شاشة توضح منفذ Azure وبه شريط البحث للبحث عن مواضيع Event Grid.

  3. في صفحة مواضيع شبكة الأحداث حدد + إنشاء من شريط الأدوات.

    لقطة شاشة توضح زر Create Topic على صفحة Event Grid topics.

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

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

    2. حدد مجموعة موارد، أو حدد إنشاء جديد ، ثم أدخل اسمإلى مجموعة الموارد .

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

    4. حدد موقعا لموضوع Event Grid.

    5. حدد مراجعة + إنشاء عند أسفل الصفحة.

      إنشاء صفحة الموضوع

    6. في علامة التبويب مراجعة + إنشاء في صفحة إنشاء موضوع، حدد إنشاء.

      مراجعة الإعدادات وإنشاء

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

    لقطة شاشة تعرض الصفحة الرئيسية لموضوع Event Grid.

    إشعار

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

قم بإنشاء نقطة نهاية للرسالة

قبل إنشاء اشتراك للموضوع المخصص، قم بإنشاء نقطة نهاية لرسالة الحدث. عادةً ما تتخذ نقطة النهاية إجراءات بناءً على بيانات الحدث. لتبسيط هذا التشغيل السريع، يمكنك نشر تطبيق ويب تم إنشاؤه مسبقا يعرض رسائل الحدث. يتضمن الحل المنشور خطة خدمة التطبيقات، وتطبيق الويب الخاص بخدمة التطبيقات، وكود المصدر من GitHub.

  1. حدد نشر على Azure لنشر الحل إلى الاشتراك الخاص بك. في بوابة Azure، توفير قيم للمعلمات.

    زر لنشر قالب Resource Manager إلى Azure.

  2. في الصفحة Custom deployment، بادر باتخاذ الخطوات التالية:

    1. بالنسبة لمجموعة الموارد، حدد مجموعة موارد موجودة أو أنشئ مجموعة موارد.

    2. بالنسبة إلى اسم الموقع، أدخل اسماً لتطبيق الويب.

    3. بالنسبة إلى اسم خطة الاستضافة، أدخل اسماً لخطة خدمة التطبيقات لاستخدامها لاستضافة تطبيق الويب.

    4. حدد "Review + create".

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

  3. في صفحة مراجعة+ إنشاء حدد إنشاء.

  4. قد يستغرق النشر بضع دقائق حتى يكتمل. حدد التنبيهات (أيقونة الجرس) في المدخل، ثم حدد Go to resource group.

    لقطة شاشة تعرض رسالة النشر الناجحة مع ارتباط للانتقال إلى مجموعة الموارد.

  5. في صفحة مجموعة الموارد، في قائمة الموارد، حدد تطبيق الويب (contosoegriviewer في المثال التالي) الذي قمت بإنشائه.

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

  6. في الصفحة App Service لتطبيق الويب الخاص بك، حدد عنوان URL للانتقال إلى موقع الويب. يجب أن يكون عنوان URL بهذا الشكل: https://<your-site-name>.azurewebsites.net.

    لقطة شاشة تعرض صفحة App Service مع تمييز الارتباط إلى الموقع.

  7. تأكد من رؤية الموقع مع عدم نشر أي أحداث عليه حتى الآن.

    لقطة شاشة تعرض نموذج تطبيق عارض شبكة الأحداث.

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

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

  1. الآن، على صفحة موضوع شبكة الأحداث لموضوعك المخصص، حدد + اشتراك حدث من شريط الأدوات.

    إضافة زر اشتراك حدث

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

    1. أدخل اسماً للاشتراك في الحدث.

    2. حدد Web Hook لـنوع نقطة النهاية.

    3. اختر تحديد نقطة نهاية .

      توفير قيم الاشتراك في الحدث

    4. بالنسبة إلى نقطة نهاية ربط الويب، أدخل عنوان URL لتطبيق الويب وأضفه api/updatesإلى عنوان URL للصفحة الرئيسية. حدد Confirm Selection.

      توفير عنوان URL لنقطة النهاية

    5. بالعودة إلى صفحة «Create Event Subscription»، حدد «Create».

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

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

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

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

يستخدم المثال الأول Azure CLI. إنه يحصل على عنوان URL والمفتاح للموضوع المخصص، ونماذج بيانات الحدث. استخدم اسم الموضوع المخصص لـ<topic name>. يُنشئ نموذج بيانات الحدث. يكون عنصر data JSON هو حمولة الحدث. يمكن لأي JSON تم تشكيله بشكل جيد أن يذهب في هذا المجال. يمكنك أيضًا استخدام حقل الموضوع للتوجيه والتصفية المتقدمين. CURL هي أداة مساعدة ترسل طلبات HTTP.

Azure CLI

  1. حدد في مدخل Azure Cloud Shell. يفتح Cloud Shell في الجزء السفلي من مستعرض الويب.

    حدد أيقونة شل السحابية

  2. حدد Bash في الزاوية العلوية اليسرى من نافذة Cloud Shell.

    لقطة شاشة تعرض Cloud Shell مع تحديد Bash في الزاوية العلوية اليمنى.

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

    endpoint=$(az eventgrid topic show --name <topic name> -g <resource group name> --query "endpoint" --output tsv)
    
  4. تشغيل الأمر التالي للحصول على المفتاح للموضوع المخصص: بعد نسخ ولصق الأمر قم بتحديث اسم الموضوع واسم مجموعة الموارد قبل تشغيل الأمر. إنه المفتاح الأساسي لموضوع Event Grid. للحصول على هذا المفتاح من بوابة Azure، قم بالتبديل إلى علامة التبويب مفاتيح الوصول في صفحة موضوع شبكة الأحداث. لتتمكن من نشر حدث على موضوع مخصص، تحتاج إلى مفتاح الوصول.

    key=$(az eventgrid topic key list --name <topic name> -g <resource group name> --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 التالي لنشر الحدث: في الأمر، aeg-sas-key يتم تعيين عنوان إلى مفتاح الوصول الذي حصلت عليه في وقت سابق.

    curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
    

Azure PowerShell

يستخدم المثال الثاني PowerShell للقيام بخطوات مماثلة.

  1. حدد في مدخل Microsoft Azure Cloud Shell (بدلاً من ذلك انتقل إلى https://shell.azure.com/). يفتح Cloud Shell في الجزء السفلي من مستعرض الويب.

    حدد أيقونة شل السحابية

  2. في Cloud Shellحدد PowerShell في الزاوية العلوية اليسرى من نافذة Cloud Shell. راجع نموذج صورة نافذة Cloud Shell في قسم Azure CLI.

  3. اضبط المتغيرات التالية. بعد نسخ ولصق كل أمر، تحديث اسم الموضوعواسم مجموعة الموارد قبل إجراء الأمر:

    مجموعة الموارد:

    $resourceGroupName = "<resource group name>"
    

    مواضيع شبكة الحدث:

    $topicName = "<topic name>"
    
  4. أجرِ الأوامر التالية للحصول على نقطة النهايةوالمفاتيح للموضوع:

    $endpoint = (Get-AzEventGridTopic -ResourceGroupName $resourceGroupName -Name $topicName).Endpoint
    $keys = Get-AzEventGridTopicKey -ResourceGroupName $resourceGroupName -Name $topicName
    
  5. قم بإعداد الحدث. نسخ وتشغيل العبارات في نافذة Shell.

    $eventID = Get-Random 99999
    
    #Date format should be SortableDateTimePattern (ISO 8601)
    $eventDate = Get-Date -Format s
    
    #Construct body using Hashtable
    $htbody = @{
        id= $eventID
        eventType="recordInserted"
        subject="myapp/vehicles/motorcycles"
        eventTime= $eventDate   
        data= @{
            make="Ducati"
            model="Monster"
        }
        dataVersion="1.0"
    }
    
    #Use ConvertTo-Json to convert event body from Hashtable to JSON Object
    #Append square brackets to the converted JSON payload since they are expected in the event's JSON payload syntax
    $body = "["+(ConvertTo-Json $htbody)+"]"
    
  6. استخدم Invoke-WebRequest لإرسال الحدث.

    Invoke-WebRequest -Uri $endpoint -Method POST -Body $body -Headers @{"aeg-sas-key" = $keys.Key1}
    

تحقق في عارض شبكة الأحداث

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

عارض شبكة الحدث

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

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

  1. من القائمة اليُسرى، حدد مجموعات الموارد . إذا لم تر الخيار في القائمة اليسرى، حدد جميع الخدمات في القائمة اليسرى، وحدد مجموعات الموارد .

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

  2. حدد مجموعة الموارد لفتح صفحة مجموعة الموارد .

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

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

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

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

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

اطلع على النماذج التالية للتعرف على كيفية نشر الأحداث واستهلاكها من Event Grid باستخدام لغات برمجة مختلفة.