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

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

إشعار

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

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

عند الانتهاء، ترى أن بيانات الحدث قد أُرسِلت إلى تطبيق الويب.

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

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

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

  • تتطلب هذه المقالة الإصدار 2.0.70 أو أحدث من نسخة من Azure CLI. إذا كنت تستخدم Azure Cloud Shell، يتم تثبيت أحدث إصدار بالفعل.

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

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

أنشئ مجموعة موارد باستخدام الأمر az group create. ينشئ المثال التالي مجموعة موارد باسم gridResourceGroup في موقع westus2. إذا حددت Try it، فسترى نافذة Azure Cloud Shell في الجزء الأيمن. ثم حدد نسخ لنسخ الأمر ولصقه في نافذة Azure Cloud Shell، واضغط على ENTER لتشغيل الأمر. قم بتغيير اسم مجموعة الموارد والموقع إذا أردت.

az group create --name gridResourceGroup --location westus2

قم بتمكين مزود موارد Event Grid

  1. إذا لم تكن قد استخدمت Event Grid من قبل في اشتراك Azure، فقد تحتاج إلى تسجيل موفر موارد Event Grid. قم بتشغيل الأمر التالي لتسجيل الموفر :

    az provider register --namespace Microsoft.EventGrid
    
  2. قد يستغرق التسجيل بعض الوقت. للتحقق من الحالة، قم بتشغيل الأمر التالي:

    az provider show --namespace Microsoft.EventGrid --query "registrationState"
    

    عندما registrationStateيكونRegistered، كنت على استعداد للمتابعة.

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

يوفر موضوع Event Grid نقطة نهاية معرّفة من قِبل المستخدم تقوم بنشر الأحداث إليها. ينشئ المثال التالي الموضوع المخصص في مجموعة الموارد الخاصة بك باستخدام Bash في Azure Cloud Shell. استبدل <your-topic-name> باسم فريد لموضوعك: يجب أن يكون اسم الموضوع المخصص فريدا لأنه جزء من إدخال نظام أسماء المجالات (DNS). بالإضافة إلى ذلك، يجب أن يكون الاسم مكونًا من عدد أحرف بين 3 إلى 50 حرفًا وأن يحتوي فقط على القيم a-z وA-Z و0-9 و"-".

  1. انسخ الأمر التالي، وحدد اسما للموضوع، واضغط على ENTER لتشغيل الأمر.

    topicname=<your-topic-name>
    
  2. az eventgrid topic create استخدم الأمر لإنشاء موضوع مخصص.

    az eventgrid topic create --name $topicname -l westus2 -g gridResourceGroup
    

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

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

  1. انسخ الأمر التالي، وحدد اسما لتطبيق الويب (نموذج عارض شبكة الأحداث)، واضغط على ENTER لتشغيل الأمر. استبدل <your-site-name> باسم فريد من أجل تطبيق الويب الخاص بك. يجب أن يكون اسم تطبيق الويب فريدًا؛ لأنه جزء من إدخال DNS.

    sitename=<your-site-name>
    
  2. az deployment group create قم بتشغيل لنشر تطبيق الويب باستخدام قالب Azure Resource Manager.

    az deployment group create \
      --resource-group gridResourceGroup \
      --template-uri "https://raw.githubusercontent.com/Azure-Samples/azure-event-grid-viewer/master/azuredeploy.json" \
      --parameters siteName=$sitename hostingPlanName=viewerhost
    

قد يستغرق انتهاء النشر بضع دقائق. بعد نجاح عملية النشر، اطّلع على تطبيق الويب الخاص بك؛ للتأكد من أنه يعمل. في مستعرض ويب، انتقل إلى: https://<your-site-name>.azurewebsites.net

يجب أن تشاهد الموقع الذي لا توجد به رسائل معروضة حاليا.

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

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

ينبغي أن تتضمن نقطة النهاية لتطبيق الويب الخاص بك اللاحقة /api/updates/.

  1. انسخ الأمر التالي، واستبدل $sitename باسم تطبيق الويب الذي أنشأته في الخطوة السابقة، واضغط على ENTER لتشغيل الأمر.

    endpoint=https://$sitename.azurewebsites.net/api/updates
    
  2. قم بتشغيل الأمر التالي للحصول على معرف المورد للموضوع الذي قمت بإنشائه.

    topicresourceid=$(az eventgrid topic show --resource-group gridResourceGroup --name $topicname --query "id" --output tsv)
    
  3. قم بتشغيل الأمر التالي لإنشاء اشتراك في الموضوع المخصص باستخدام نقطة النهاية.

    az eventgrid event-subscription create \
      --source-resource-id $topicresourceid \
      --name demoViewerSub \
      --endpoint $endpoint      
    

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

    عرض حدث الاشتراك في Azure Event Grid Viewer

أرسل حدث إلى موضوعك المُخصص

الآن، دعونا نشغل حدثًا لنرى كيف تقوم شبكة الحدث بتوزيع الرسالة على نقطة النهاية الخاصة بك. أولاً، دعنا نحصل على عنوان URL والمفتاح للموضوع المخصص.

endpoint=$(az eventgrid topic show --name $topicname -g gridResourceGroup --query "endpoint" --output tsv)
key=$(az eventgrid topic key list --name $topicname -g gridResourceGroup --query "key1" --output tsv)

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

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"} ]'

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

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

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

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

[{
  "id": "1807",
  "eventType": "recordInserted",
  "subject": "myapp/vehicles/motorcycles",
  "eventTime": "2017-08-10T21:03:07+00:00",
  "data": {
    "make": "Ducati",
    "model": "Monster"
  },
  "dataVersion": "1.0",
  "metadataVersion": "1",
  "topic": "/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/topics/{topic}"
}]

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

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

az group delete --name gridResourceGroup

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

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

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