مخطط أحداث Azure Event Grid

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

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

ترسل مصادر الأحداث إلى Azure Event Grid في صفيف، والتي يمكن أن تحتوي على العديد من كائنات الأحداث. عند نشر الأحداث إلى موضوع Event Grid، يمكن أن يكون للصفيف حجم إجمالي يصل إلى 1 ميغابايت. كل حدث في الصفيف يقتصر على 1 ميغابايت. إذا كان أي حدث أو الصفيف أكبر من حدود الحجم، تتلقى الرد 413 الحمولة كبيرة جداً. العمليات مشحونة بزيادات 64 كيلوبايت على الرغم من ذلك. لذلك، فإن الأحداث التي تزيد عن 64 كيلوبايت تتحمل رسوم عمليات كما لو كانت أحداثا متعددة. على سبيل المثال، قد يؤدي الحدث الذي يبلغ 130 كيلوبايت إلى عمليات كما لو كان ثلاثة أحداث منفصلة.

Event Grid يرسل الأحداث إلى المشتركين في صفيف يحتوي على حدث واحد. قد يتغير هذا السلوك في المستقبل.

يمكنك العثور على مخطط JSON للحدث Event Grid وحمولة بيانات كل ناشر Azure في Event Schema store.

Event schema

يوضح المثال التالي الخصائص التي يتم استخدامها من قبل جميع ناشري الأحداث:

[
  {
    "topic": string,
    "subject": string,
    "id": string,
    "eventType": string,
    "eventTime": string,
    "data":{
      object-unique-to-each-publisher
    },
    "dataVersion": string,
    "metadataVersion": string
  }
]

على سبيل المثال، المخطط المنشور لحدث تخزين Azure Blob هو:

[
  {
    "topic": "/subscriptions/{subscription-id}/resourceGroups/Storage/providers/Microsoft.Storage/storageAccounts/xstoretestaccount",
    "subject": "/blobServices/default/containers/oc2d2817345i200097container/blobs/oc2d2817345i20002296blob",
    "eventType": "Microsoft.Storage.BlobCreated",
    "eventTime": "2017-06-26T18:41:00.9584103Z",
    "id": "831e1650-001e-001b-66ab-eeb76e069631",
    "data": {
      "api": "PutBlockList",
      "clientRequestId": "6d79dbfb-0e37-4fc4-981f-442c9ca65760",
      "requestId": "831e1650-001e-001b-66ab-eeb76e000000",
      "eTag": "0x8D4BCC2E4835CD0",
      "contentType": "application/octet-stream",
      "contentLength": 524288,
      "blobType": "BlockBlob",
      "url": "https://oc2d2817345i60006.blob.core.windows.net/oc2d2817345i200097container/oc2d2817345i20002296blob",
      "sequencer": "00000000000004420000000000028963",
      "storageDiagnostics": {
        "batchId": "b68529f3-68cd-4744-baa4-3c0498ec19f0"
      }
    },
    "dataVersion": "",
    "metadataVersion": "1"
  }
]

خصائص الحدث

تحتوي جميع الأحداث على نفس البيانات المستوى الأعلى التالية:

الخاصية النوع مطلوبة ‏‏الوصف
topic سلسلة لا، ولكن إذا تم تضمينه، يجب أن يطابق موضوع Event Grid معرف Azure Resource Manager بالضبط. إذا لم يتم تضمينها، يتم طوابع Event Grid على الحدث. مسار المورد الكامل إلى مصدر الحدث. هذا الحقل غير قابل للكتابة. توفر شبكة الأحداث هذه القيمة.
subject سلسلة ‏‏نعم‬ مسار يحدده الناشر لموضوع الحدث.
eventType سلسلة ‏‏نعم‬ أحد أنواع الأحداث المسجلة لمصدر الحدث الماثل.
وقت الحدث سلسلة ‏‏نعم‬ الوقت الذي يتم إنشاء الحدث استناداً إلى وقت UTC الموفر.
id سلسلة ‏‏نعم‬ المعرف الفريد للحدث.
data كائن ‏‏نعم‬ بيانات الأحداث الخاصة بموفر المورد.
dataVersion سلسلة لا، ولكن سيتم ختمها بقيمة فارغة. إصدار مخطط كائن البيانات. يعرّف الناشر إصدار المخطط.
metadataVersion سلسلة غير مطلوب، ولكن إذا تم تضمينه، يجب أن يطابق مخطط Event Grid metadataVersion بالضبط (حالياً 1 فقط). إذا لم يتم تضمينها، يتم طوابع Event Grid على الحدث. إصدار مخطط البيانات الوصفية للحدث. تحدد «شبكة الأحداث» مخطط خصائص المستوى الأعلى. توفر شبكة الأحداث هذه القيمة.

للتعرف على الخصائص الموجودة في عنصر البيانات، راجع مصدر الحدث:

بالنسبة للمواضيع المخصصة، يحدد ناشر الحدث كائن البيانات. يجب أن تحتوي بيانات المستوى الأعلى على نفس حقول الأحداث القياسية المعرفة من قبل المورد.

عند نشر الأحداث على مواضيع مخصصة، قم بإنشاء موضوعات للأحداث التي تجعل من السهل على المشتركين معرفة ما إذا كانوا مهتمين بالحدث. يستخدم المشتركون الموضوع لتصفية أحداث وتوجيهها. فكر في توفير المسار للمكان الذي حدث فيه الحدث، حتى يتمكن المشتركون من التصفية حسب أجزاء من هذا المسار. يمكن المسار المشتركين من تصفية الأحداث بشكل ضيق أو واسع. على سبيل المثال، إذا قدمت مساراً من ثلاثة أقسام مثل /A/B/C في الموضوع، فيمكن للمشتركين التصفية حسب المقطع الأول /A للحصول على مجموعة واسعة من الأحداث. يحصل هؤلاء المشتركون على أحداث مع مواضيع مثل /A/B/C أو /A/D/E. يمكن للمشتركين الآخرين التصفية حسب /A/B للحصول على مجموعة أحداث أضيق.

في بعض الأحيان يحتاج موضوعك إلى مزيد من التفاصيل حول ما حدث. على سبيل المثال، يوفر ناشر حسابات التخزين الموضوع /blobServices/default/containers/<container-name>/blobs/<file> عند إضافة ملف إلى الحاوية. يمكن تصفية المشترك حسب المسار /blobServices/default/containers/<container-name>/ للحصول على جميع الأحداث لتلك الحاوية ولكن ليس حاويات أخرى في حساب التخزين. يمكن للمشترك أيضاً تصفية أو توجيه بواسطة اللاحقة .txt للعمل فقط مع الملفات النصية.

CloudEvents

CloudEvents هو تنسيق الحدث الموصى باستخدامه. تواصل Azure Event Grid الاستثمار في الميزات المتعلقة بتنسيق CloudEvents JSON على الأقل. نظرا لحقيقة أن بعض مصادر الأحداث مثل خدمات Azure تستخدم تنسيق Event Grid، يتم توفير الجدول التالي لمساعدتك على فهم التحويل المدعوم عند استخدام CloudEvents وتنسيقات شبكة الأحداث كمخطط إدخال في الموضوعات وكمخطط إخراج في اشتراكات الأحداث. لا يمكن استخدام مخطط إخراج شبكة الأحداث عند استخدام CloudEvents كمخطط إدخال لأن CloudEvents يدعم سمات الملحق غير المعتمدة من قبل مخطط شبكة الأحداث.

مخطط الإدخال مخطط الإخراج
تنسيق CloudEvents تنسيق CloudEvents
تنسيق شبكات الأحداث تنسيق CloudEvents
تنسيق شبكات الأحداث تنسيق شبكات الأحداث

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