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

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

  1. قم بإنشاء موضوع مخصص لـ Event Grid.
  2. إنشاء اشتراك Azure Event Hubs للموضوع المخصص.
  3. إرسال نماذج الأحداث إلى الموضوع المخصص.
  4. تحقق من تسليم هذه الأحداث إلى مركز الأحداث.

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

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

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

أنشئ مجموعة موارد باستخدام الأمر az group create. ينشئ المثال التالي مجموعة موارد باسم gridResourceGroup في موقع westus2.

إشعار

حدد Try it بجوار مثال CLI لتشغيل 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، لاحظ أن Event Grid أرسلت هذه الأحداث الثلاثة إلى مركز الأحداث. ترى نفس المخطط في صفحة نظرة عامة لصفحة demohub مثيل مراكز الأحداث.

Image showing the portal page with incoming message count as 3.

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

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

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

az group delete --name gridResourceGroup

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

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

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