التشغيل السريع: توجيه الأحداث المخصصة إلى مركز أحداث باستخدام 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
إذا لم تكن قد استخدمت Event Grid من قبل في اشتراك Azure، فقد تحتاج إلى تسجيل موفر موارد Event Grid. قم بتشغيل الأمر التالي لتسجيل الموفر :
az provider register --namespace Microsoft.EventGrid
قد يستغرق التسجيل بعض الوقت. للتحقق من الحالة، قم بتشغيل الأمر التالي:
az provider show --namespace Microsoft.EventGrid --query "registrationState"
عندما
registrationState
يكونRegistered
، كنت على استعداد للمتابعة.
إنشاء موضوع مخصص
يوفر موضوع Event Grid نقطة نهاية معرّفة من قِبل المستخدم تقوم بنشر الأحداث إليها. ينشئ المثال التالي الموضوع المخصص في مجموعة الموارد الخاصة بك.
استبدل <TOPIC NAME>
باسم فريد لموضوعك المخصص. يجب أن يكون اسم موضوع Event Grid فريدا لأن إدخال نظام أسماء المجالات (DNS) يمثله.
حدد اسما للموضوع:
topicname="<TOPIC NAME>"
قم بتشغيل الأمر التالي لإنشاء الموضوع:
az eventgrid topic create --name $topicname -l westus2 -g gridResourceGroup
إنشاء مركز أحداث
قبل الاشتراك في الموضوع المخصص، قم بإنشاء نقطة النهاية لرسالة الحدث. إنشاء مركز الحدث لجمع الأحداث
حدد اسما فريدا لمساحة اسم مراكز الأحداث:
namespace="<EVENT HUBS NAMESPACE NAME>"
قم بتشغيل الأوامر التالية لإنشاء مساحة اسم مراكز الأحداث ومركز أحداث يسمى
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
مراكز الأحداث.
عادة ما تقوم بإنشاء تطبيق يسترد رسائل الحدث من مركز الحدث. لمزيد من المعلومات، راجع:
- ابدأ في تلقي الرسائل مع مضيف معالج الأحداث في .NET Standard
- تلقي الأحداث من Azure Event Hubs باستخدام Java
- تلقي الأحداث من مراكز الأحداث باستخدام Apache Storm
تنظيف الموارد
إذا كنت تخطط لمتابعة العمل مع هذا الحدث، فلا تنظف الموارد التي قمت بإنشائها في هذه المقالة. وإلا، استخدم الأمر التالي لحذف الموارد:
az group delete --name gridResourceGroup
المحتوى ذو الصلة
الآن بعد أن عرفت كيفية إنشاء مواضيع مخصصة واشتراكات الأحداث، تعرف على المزيد حول ما يمكن أن تساعدك شبكة الأحداث على القيام به:
- حول شبكة الأحداث
- توجيه أحداث Azure Blob Storage إلى نقطة نهاية ويب مخصصة
- مراقبة تغييرات الجهاز الظاهري باستخدام Azure Event Grid وLogic Apps
- نقل البيانات الكبيرة إلى مستودع البيانات
للتعرف على نشر الأحداث إلى شبكة الأحداث واستهلاكها منها باستخدام لغات برمجة مختلفة، راجع العينات التالية: