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

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

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

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

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

مواضيع Event Grid هي موارد Azure، ويجب وضعها في مجموعة موارد Azure. مجموعة الموارد هي عبارة عن مجموعة منطقية يتم فيها توزيع جميع موارد Azure وإدارتها.

يمكنك إنشاء مجموعة موارد مستخدماً الأمر az group create. في المثال التالي سيتم إنشاء مجموعة موارد تسمى gridResourceGroup في المنطقة westus2.

حدد Open Cloud Shell لفتح Azure Cloud Shell في الجزء الأيمن. حدد الزر نسخ لنسخ الأمر، والصقه في 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 نقطة نهاية معرّفة من قِبل المستخدم تقوم بنشر الأحداث إليها. ينشئ المثال التالي الموضوع المخصص في مجموعة الموارد الخاصة بك.

استبدل <TOPIC NAME> باسم فريد لموضوعك المخصص. يجب أن يكون اسم موضوع Event Grid فريدا لأن إدخال نظام أسماء المجالات (DNS) يمثله.

  1. حدد اسما للموضوع:

    topicname="<TOPIC NAME>"
    
  2. قم بتشغيل الأمر التالي لإنشاء الموضوع:

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

إنشاء مركز أحداث

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

  1. حدد اسما فريدا لمساحة اسم مراكز الأحداث:

    namespace="<EVENT HUBS NAMESPACE NAME>"
    
  2. قم بتشغيل الأوامر التالية لإنشاء مساحة اسم مراكز الأحداث ومركز أحداث يسمى demohub في مساحة الاسم هذه:

    hubname=demohub
    
    az eventhubs namespace create --name $namespace --resource-group gridResourceGroup
    az eventhubs eventhub create --name $hubname --namespace-name $namespace --resource-group gridResourceGroup
    

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

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

/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.EventHub/namespaces/<NAMESPACE NAME>/eventhubs/<EVENT HUB NAME>

يحصل البرنامج النصي التالي على معرف المورد لمركز الحدث ويشترك في موضوع Event Grid. فإنه يُعين نوع نقطة النهاية eventhub ويستخدم معرف مركز الحدث لنقطة النهاية.

hubid=$(az eventhubs eventhub show --name $hubname --namespace-name $namespace --resource-group gridResourceGroup --query id --output tsv)
topicid=$(az eventgrid topic show --name $topicname -g gridResourceGroup --query id --output tsv)

az eventgrid event-subscription create \
  --source-resource-id $topicid \
  --name subtoeventhub \
  --endpoint-type eventhub \
  --endpoint $hubid

يمتلك الحساب الذي يُنشئ اشتراك الحدث حق الوصول للكتابة إلى مركز الحدث.

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

تشغيل حدث لمعرفة كيفية توزيع شبكة الأحداث الرسالة إلى نقطة النهاية. أولا، احصل على عنوان 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 بيانات الحدث.

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

for i in 1 2 3
do
   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 -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
done

في مدخل Microsoft Azure، في صفحة Overview لمساحة اسم Event Hubs، لاحظ أن Event Grid أرسلت هذه الأحداث الثلاثة إلى مركز الأحداث. ترى نفس المخطط في صفحة نظرة عامة لمثيل demohub مراكز الأحداث.

لقطة شاشة تعرض صفحة المدخل مع عدد رسائل واردة يبلغ 3.

عادة ما تقوم بإنشاء تطبيق يسترد رسائل الحدث من مركز الحدث. لمزيد من المعلومات، راجع:

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

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

az group delete --name gridResourceGroup

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

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