إدارة الموضوعات ونشر الأحداث باستخدام مجالات الأحداث
يوضح هذا المقال طريقة القيام بما يلي:
- إنشاء مجال في شبكة أحداث Azure
- الاشتراك في مواضيع شبكة الأحداث
- سرد المفاتيح
- نشر الأحداث في أحد المجالات
للتعرف على مجالات الأحداث، راجع فهم مجالات الأحداث لإدارة موضوعات شبكة الأحداث.
إنشاء مجال حدث
لإدارة مجموعات كبيرة من الموضوعات، قم بإنشاء مجال حدث.
az eventgrid domain create \
-g <my-resource-group> \
--name <my-domain-name> \
-l <location>
يعيد الإنشاء الناجح القيم التالية:
{
"endpoint": "https://<my-domain-name>.westus2-1.eventgrid.azure.net/api/events",
"id": "/subscriptions/<sub-id>/resourceGroups/<my-resource-group>/providers/Microsoft.EventGrid/domains/<my-domain-name>",
"inputSchema": "EventGridSchema",
"inputSchemaMapping": null,
"location": "westus2",
"name": "<my-domain-name>",
"provisioningState": "Succeeded",
"resourceGroup": "<my-resource-group>",
"tags": null,
"type": "Microsoft.EventGrid/domains"
}
لاحظ endpoint
وid
حيث إنهما مطلوبان لإدارة المجال ونشر الأحداث.
إدارة الوصول إلى الموضوعات
تتم إدارة الوصول إلى الموضوعات عبر تعيين الدور. يستخدم تعيين الدور التحكم في الوصول استناداً إلى الدور Azure لتقييد العمليات في موارد Azure للمستخدمين المعتمدين في نطاق معين.
تحتوي شبكة الأحداث على دورين مدمجين يمكنك استخدامهما لتعيين وصول مستخدمين معينين إلى مواضيع مختلفة داخل مجال معين. وتتمثل هذه الأدوار في EventGrid EventSubscription Contributor (Preview)
الذي يسمح بإنشاء وحذف الاشتراكات، وEventGrid EventSubscription Reader (Preview)
الذي يسمح فقط بإدراج اشتراكات الأحداث.
يقيد أمر Azure CLI التالي alice@contoso.com
بإنشاء وحذف اشتراكات الأحداث المتعلقة بالموضوع demotopic1
فقط:
az role assignment create \
--assignee alice@contoso.com \
--role "EventGrid EventSubscription Contributor (Preview)" \
--scope /subscriptions/<sub-id>/resourceGroups/<my-resource-group>/providers/Microsoft.EventGrid/domains/<my-domain-name>/topics/demotopic1
للحصول على مزيدٍ من المعلومات حول إدارة الوصول إلى عمليات شبكة الأحداث، راجع أمان شبكة الأحداث والمصادقة.
إنشاء الموضوعات والاشتراكات
تقوم خدمة شبكة الأحداث تلقائياً بإنشاء وإدارة الموضوع المطابق في مجال ما بناءً على طلب إنشاء اشتراك حدث لأحد الموضوعات في مجال ما. لا توجد خطوة منفصلة لإنشاء موضوع في مجال. وبالمثل، عند حذف اشتراك الحدث الأخير لموضوع ما، يتم حذف الموضوع أيضاً.
الاشتراك في موضوع في مجال ما يماثل الاشتراك في أي مورد آخر من موارد Azure. بالنسبة لمعرّف المورد المصدر، حدد معرّف مجال الحدث الذي تم إرجاعه عند إنشاء المجال وقت سابق. لتحديد الموضوع الذي تريد الاشتراك فيه، أضف /topics/<my-topic>
إلى نهاية معرّف المورد المصدر. لإنشاء اشتراك حدث لنطاق مجال يتلقى جميع الأحداث في النطاق، حدد معرّف نطاق الحدث دون تحديد أي موضوعات.
عادةً ما يقوم المستخدم الذي منحته حق الوصول في القسم السابق بإنشاء الاشتراك. لتبسيط هذه المقالة، قم بإنشاء الاشتراك.
az eventgrid event-subscription create \
--name <event-subscription> \
--source-resource-id "/subscriptions/<sub-id>/resourceGroups/<my-resource-group>/providers/Microsoft.EventGrid/domains/<my-domain-name>/topics/demotopic1" \
--endpoint https://contoso.azurewebsites.net/api/updates
إذا كنت بحاجة إلى نقطة نهاية اختبار للاشتراك في الأحداث الخاصة بك، يمكنك دائما نشر تطبيق ويب تم إنشاؤه مسبقا يعرض الأحداث الواردة. يمكنك إرسال الأحداث الخاصة بك إلى موقع الويب الاختباري الخاص بك على https://<your-site-name>.azurewebsites.net/api/updates
.
يتم تخزين الأذونات التي تم تعيينها لموضوع في معرف Microsoft Entra ويجب حذفها بشكل صريح. لا يؤدي حذف اشتراك حدث إلى إبطال وصول المستخدمين لإنشاء اشتراكات الحدث إذا كان لديهم حق الوصول للكتابة في موضوع ما.
نشر الأحداث إلى مجال Event Grid
إن نشر الأحداث في مجال ما هو نفسه النشر في موضوع مخصص. ومع ذلك، بدلاً من النشر في الموضوع المخصص، يمكنك نشر جميع الأحداث في نقطة نهاية المجال. في بيانات حدث JSON، أنت تحدد الموضوع الذي تريد أن تنتقل إليه الأحداث. سيؤدي صفيف الأحداث التالي إلى إرسال حدث ذي "id": "1111"
إلى الموضوع demotopic1
، بينما سيتم إرسال الحدث ذي "id": "2222"
إلى الموضوع demotopic2
:
[{
"topic": "demotopic1",
"id": "1111",
"eventType": "maintenanceRequested",
"subject": "myapp/vehicles/diggers",
"eventTime": "2018-10-30T21:03:07+00:00",
"data": {
"make": "Contoso",
"model": "Small Digger"
},
"dataVersion": "1.0"
},
{
"topic": "demotopic2",
"id": "2222",
"eventType": "maintenanceCompleted",
"subject": "myapp/vehicles/tractors",
"eventTime": "2018-10-30T21:04:12+00:00",
"data": {
"make": "Contoso",
"model": "Big Tractor"
},
"dataVersion": "1.0"
}]
للحصول على نقطة نهاية المجال باستخدام Azure CLI، استخدم
az eventgrid domain show \
-g <my-resource-group> \
-n <my-domain>
للحصول على مفاتيح مجال ما، استخدم:
az eventgrid domain key list \
-g <my-resource-group> \
-n <my-domain>
ثم استخدم أسلوبك المفضل لإنشاء HTTP POST لنشر أحداثك في مجال شبكة الأحداث.
إشعار
بالنسبة للعينات التي تستخدم لغة البرمجة SDKs لنشر الأحداث إلى مجال Event Grid، استخدم الارتباطات التالية:
البحث في قوائم الموضوعات أو الاشتراكات
للبحث في عدد كبير من الموضوعات أو الاشتراكات وإدارتها، تدعم واجهات برمجة تطبيقات شبكة الأحداث عمل القوائم وفصل الصفحات.
استخدام CLI
على سبيل المثال، يسرد الأمر التالي جميع الموضوعات ذات الاسم الذي يحتوي على mytopic
.
az eventgrid topic list --odata-query "contains(name, 'mytopic')"
للحصول على مزيدٍ من المعلومات حول هذا الأمر، راجع az eventgrid topic list
.
الخطوات التالية
- للحصول على مزيدٍ من المعلومات حول المفاهيم عالية المستوى في نطاقات الأحداث وسبب فائدتها، راجع نظرة عامة تصورية لمجالات الأحداث.