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

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

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

إذا لم يكن لديك اشتراك في 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. حدد اسما فريدا لحساب تخزين Azure:

    storagename="<STORAGE ACCOUNT NAME>"    
    
  2. قم بتشغيل الأوامر التالية لإنشاء حساب تخزين و قائمة انتظار (تسمى eventqueue) في التخزين:

    queuename="eventqueue"
    
    az storage account create -n $storagename -g gridResourceGroup -l westus2 --sku Standard_LRS
    key="$(az storage account keys list -n $storagename --query "[0].{value:value}" --output tsv)"    
    az storage queue create --name $queuename --account-name $storagename --account-key $key
    

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

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

/subscriptions/<AZURE SUBSCRIPTION ID>/resourcegroups/<RESOURCE GROUP NAME>/providers/Microsoft.Storage/storageAccounts/<STORAGE ACCOUNT NAME>/queueservices/default/queues/<QUEUE NAME>

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

قبل تشغيل الأمر، استبدل العنصر النائب لتاريخ انتهاء الصلاحية (<yyyy-mm-dd>) بقيمة فعلية للسنة والشهر واليوم.

storageid=$(az storage account show --name $storagename --resource-group gridResourceGroup --query id --output tsv)
queueid="$storageid/queueservices/default/queues/$queuename"
topicid=$(az eventgrid topic show --name $topicname -g gridResourceGroup --query id --output tsv)

az eventgrid event-subscription create \
  --source-resource-id $topicid \
  --name mystoragequeuesubscription \
  --endpoint-type storagequeue \
  --endpoint $queueid \
  --expiration-date "<yyyy-mm-dd>"

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

إذا كنت تستخدم واجهة برمجة تطبيقات REST لإنشاء الاشتراك، يمكنك تمرير معرف حساب التخزين واسم قائمة الانتظار كمعلمة منفصلة:

"destination": {
  "endpointType": "storagequeue",
  "properties": {
    "queueName":"eventqueue",
    "resourceId": "/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-name>"
  }
  ...

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

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

لقطة شاشة تعرض قائمة بالرسائل المستلمة من Event Grid في قائمة انتظار.

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

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

az group delete --name gridResourceGroup

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

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