نظرة عامة على تكامل Azure Service Bus إلى Event Grid

يمكن أن يرسل ناقل خدمة Microsoft Azure الأحداث إلى Event Grid عندما تكون هناك رسائل في قائمة انتظار أو اشتراك عند عدم وجود أجهزة استقبال. يمكنك إنشاء اشتراكات Event Grid في مساحات أسماء Service Bus الخاصة بك، والاستماع إلى هذه الأحداث، ثم الرد على الأحداث من خلال بدء تشغيل جهاز استقبال. باستخدام هذه الميزة، يمكنك استخدام Service Bus في نماذج البرمجة التفاعلية. السيناريو الرئيسي لهذه الميزة هو أن قوائم انتظار أو اشتراكات ناقل الخدمة ذات الحجم المنخفض من الرسائل لا تحتاج إلى جهاز استقبال يقوم باستقصاء الرسائل بشكل مستمر.

لتمكين الميزة، تحتاج إلى العناصر التالية:

  • مساحة اسم Service Bus Premium تحتوي على قائمة انتظار واحدة على الأقل لناقل الخدمة أو موضوع Service Bus باشتراك واحد على الأقل.
  • وصول المساهم إلى مساحة اسم ناقل الخدمة. انتقل إلى مساحة اسم ناقل الخدمة في مدخل Microsoft Azure، ثم حدد Access control (IAM) ، وحدد علامة التبويب Role assignments . تحقق من أن لديك حق وصول المساهم إلى مساحة الاسم.
  • بالإضافة إلى ذلك، أنت بحاجة إلى اشتراك Event Grid لمساحة اسم ناقل الخدمة. يتلقى هذا الاشتراك إشعاراً من Event Grid يفيد بوجود رسائل سيتم التقاطها. يمكن أن يكون المشتركون النموذجيون هم ميزة Logic Apps في Azure App Service أو وظائف Azure أو خطاف ويب للاتصال بتطبيق ويب. ثم يقوم المشترك بمعالجة الرسائل.

19

أنواع الأحداث المتوفرة

خدمة ناقل ترسل أنواع الأحداث التالية:

نوع الحدث الوصف
Microsoft.ServiceBus.ActiveMessagesAvailableWithNoListeners يتم رفعه عند وصول رسالة نشطة جديدة في قائمة انتظار أو اشتراك ولا توجد أجهزة استقبال تستمع.
Microsoft.ServiceBus.DeadletterMessagesAvailableWithNoListeners يتم رفعه عند وصول رسائل نشطة جديدة في قائمة انتظار الرسائل المهملة ولا يوجد مستمعون نشطون.
Microsoft.ServiceBus.ActiveMessagesAvailablePeriodicNotifications يتم رفعها كل 30 ثانية إذا كانت هناك رسائل نشطة في قائمة انتظار أو اشتراك، حتى إذا كان هناك مستمعون نشطون في قائمة الانتظار أو الاشتراك المحدد. يتم رفعها أيضا عندما ينتقل عدد الرسائل النشطة من 0 إلى قيمة إيجابية لقائمة الانتظار أو الاشتراك.
Microsoft.ServiceBus.DeadletterMessagesAvailablePeriodicNotifications يتم رفعها كل 30 ثانية إذا كانت هناك رسائل في كيان الأحرف المهملة لقائمة انتظار أو اشتراك، حتى إذا كان هناك مستمعون نشطون في كيان الحرف المهمل في قائمة الانتظار أو الاشتراك المحدد. يتم رفعه أيضا عندما ينتقل عدد رسائل الأحرف المهملة من 0 إلى قيمة إيجابية لكيان الحرف المهمل في قائمة الانتظار أو الاشتراك.

مثال حدث

الرسائل النشطة المتوفرة بدون مستمعين

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

[{
  "topic": "/subscriptions/{subscription-id}/resourcegroups/{your-rg}/providers/Microsoft.ServiceBus/namespaces/{your-service-bus-namespace}",
  "subject": "topics/{your-service-bus-topic}/subscriptions/{your-service-bus-subscription}",
  "eventType": "Microsoft.ServiceBus.ActiveMessagesAvailableWithNoListeners",
  "eventTime": "2018-02-14T05:12:53.4133526Z",
  "id": "dede87b0-3656-419c-acaf-70c95ddc60f5",
  "data": {
    "namespaceName": "YOUR SERVICE BUS NAMESPACE WILL SHOW HERE",
    "requestUri": "https://{your-service-bus-namespace}.servicebus.windows.net/{your-topic}/subscriptions/{your-service-bus-subscription}/messages/head",
    "entityType": "subscriber",
    "queueName": "QUEUE NAME IF QUEUE",
    "topicName": "TOPIC NAME IF TOPIC",
    "subscriptionName": "SUBSCRIPTION NAME"
  },
  "dataVersion": "1",
  "metadataVersion": "1"
}]

تتوفر رسائل غير مستخدمة بدون مستمعين

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

[{
  "topic": "/subscriptions/{subscription-id}/resourcegroups/{your-rg}/providers/Microsoft.ServiceBus/namespaces/{your-service-bus-namespace}",
  "subject": "topics/{your-service-bus-topic}/subscriptions/{your-service-bus-subscription}",
  "eventType": "Microsoft.ServiceBus.DeadletterMessagesAvailableWithNoListeners",
  "eventTime": "2018-02-14T05:12:53.4133526Z",
  "id": "dede87b0-3656-419c-acaf-70c95ddc60f5",
  "data": {
    "namespaceName": "YOUR SERVICE BUS NAMESPACE WILL SHOW HERE",
    "requestUri": "https://{your-service-bus-namespace}.servicebus.windows.net/{your-topic}/subscriptions/{your-service-bus-subscription}/$deadletterqueue/messages/head",
    "entityType": "subscriber",
    "queueName": "QUEUE NAME IF QUEUE",
    "topicName": "TOPIC NAME IF TOPIC",
    "subscriptionName": "SUBSCRIPTION NAME"
  },
  "dataVersion": "1",
  "metadataVersion": "1"
}]

الإعلامات الدورية المتوفرة للرسائل النشطة

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

[{
  "topic": "/subscriptions/<subscription id>/resourcegroups/DemoGroup/providers/Microsoft.ServiceBus/namespaces/<YOUR SERVICE BUS NAMESPACE WILL SHOW HERE>",
  "subject": "topics/<service bus topic>/subscriptions/<service bus subscription>",
  "eventType": "Microsoft.ServiceBus.ActiveMessagesAvailablePeriodicNotifications",
  "eventTime": "2018-02-14T05:12:53.4133526Z",
  "id": "dede87b0-3656-419c-acaf-70c95ddc60f5",
  "data": {
    "namespaceName": "YOUR SERVICE BUS NAMESPACE WILL SHOW HERE",
    "requestUri": "https://YOUR-SERVICE-BUS-NAMESPACE-WILL-SHOW-HERE.servicebus.windows.net/TOPIC-NAME/subscriptions/SUBSCRIPTIONNAME/$deadletterqueue/messages/head",
    "entityType": "subscriber",
    "queueName": "QUEUE NAME IF QUEUE",
    "topicName": "TOPIC NAME IF TOPIC",
    "subscriptionName": "SUBSCRIPTION NAME"
  },
  "dataVersion": "1",
  "metadataVersion": "1"
}]

الرسائل المهمدة المتوفرة إعلامات دورية

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

[{
  "topic": "/subscriptions/<subscription id>/resourcegroups/DemoGroup/providers/Microsoft.ServiceBus/namespaces/<YOUR SERVICE BUS NAMESPACE WILL SHOW HERE>",
  "subject": "topics/<service bus topic>/subscriptions/<service bus subscription>",
  "eventType": "Microsoft.ServiceBus.DeadletterMessagesAvailablePeriodicNotifications",
  "eventTime": "2018-02-14T05:12:53.4133526Z",
  "id": "dede87b0-3656-419c-acaf-70c95ddc60f5",
  "data": {
    "namespaceName": "YOUR SERVICE BUS NAMESPACE WILL SHOW HERE",
    "requestUri": "https://YOUR-SERVICE-BUS-NAMESPACE-WILL-SHOW-HERE.servicebus.windows.net/TOPIC-NAME/subscriptions/SUBSCRIPTIONNAME/$deadletterqueue/messages/head",
    "entityType": "subscriber",
    "queueName": "QUEUE NAME IF QUEUE",
    "topicName": "TOPIC NAME IF TOPIC",
    "subscriptionName": "SUBSCRIPTION NAME"
  },
  "dataVersion": "1",
  "metadataVersion": "1"
}]

خصائص الحدث

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

الخاصية النوع الوصف
topic سلسلة مسار المورد الكامل إلى مصدر الحدث. هذا الحقل غير قابل للكتابة. توفر «شبكة الأحداث» هذه القيمة.
subject سلسلة مسار معرف من قبل الناشر إلى موضوع الحدث.
eventType سلسلة أحد أنواع الأحداث المسجلة لمصدر الحدث.
eventTime سلسلة وقت إنشاء الحدث بناءً على توقيت UTC الخاص بالموفر.
id سلسلة معرّف فريد للحدث.
data عنصر بيانات حدث تخزين البيانات الثنائية الكبيرة.
dataVersion سلسلة إصدار مخطط عنصر البيانات. يعرّف الناشر إصدار المخطط.
metadataVersion سلسلة إصدار المخطط لبيانات تعريف الحدث. تحدد «شبكة الأحداث» مخطط خصائص المستوى الأعلى. توفر «شبكة الأحداث» هذه القيمة.

عنصر البيانات له الخصائص التالية:

الخاصية النوع الوصف
namespaceName سلسلة مساحة اسم ناقل الخدمة الموجود في المورد.
requestUri سلسلة عنوان URI إلى قائمة الانتظار المحددة أو الاشتراك الذي ينبعث منه الحدث.
entityType سلسلة نوع كيان ناقل الخدمة الذي يرسل أحداث (قائمة الانتظار أو الاشتراك).
queueName سلسلة قائمة الانتظار التي تحتوي على رسائل نشطة في حالة الاشتراك في قائمة انتظار. القيمة فارغة إذا كنت تستخدم مواضيع / اشتراكات.
topicName سلسلة الموضوع الذي ينتمي إليه اشتراك ناقل الخدمة مع الرسائل النشطة. القيمة فارغة إذا كنت تستخدم قائمة انتظار.
subscriptionName سلسلة اشتراك ناقل الخدمة مع الرسائل النشطة. القيمة فارغة إذا كنت تستخدم قائمة انتظار.

اشتراكات Event Grid لمساحات أسماء Service Bus

يمكنك إنشاء اشتراكات Event Grid لمساحات أسماء Service Bus بثلاث طرق مختلفة:

  • مدخل Microsoft Azure. راجع البرامج التعليمية التالية لمعرفة كيفية استخدام مدخل Microsoft Azure لإنشاء اشتراكات شبكة الأحداث لأحداث Service Bus مع Azure Logic Apps وAzure Functions كمعالجات.
  • Azure CLI يوضح مثال CLI التالي كيفية إنشاء اشتراك وظائف Azure لموضوع نظام تم إنشاؤه بواسطة مساحة اسم ناقل الخدمة.

    namespaceid=$(az resource show --namespace Microsoft.ServiceBus --resource-type namespaces --name "<service bus namespace>" --resource-group "<resource group that contains the service bus namespace>" --query id --output tsv
    
    az eventgrid event-subscription create --resource-id $namespaceid --name "<YOUR EVENT GRID SUBSCRIPTION NAME>" --endpoint "<your_endpoint_url>" --subject-ends-with "<YOUR SERVICE BUS SUBSCRIPTION NAME>"
    
  • PowerShell. وفيما يلي مثال على ذلك:
    $namespaceID = (Get-AzServiceBusNamespace -ResourceGroupName "<YOUR RESOURCE GROUP NAME>" -NamespaceName "<YOUR NAMESPACE NAME>").Id
    
    New-AzEVentGridSubscription -EventSubscriptionName "<YOUR EVENT GRID SUBSCRIPTION NAME>" -ResourceId $namespaceID -Endpoint "<YOUR ENDPOINT URL>” -SubjectEndsWith "<YOUR SERVICE BUS SUBSCRIPTION NAME>"
    

كم عدد الأحداث التي تنبعث، وكم مرة؟

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

بشكل افتراضي، يرسل Service Bus أحداثاً لجميع الكيانات في مساحة الاسم. إذا كنت ترغب في الحصول على أحداث لكيانات معينة فقط، فراجع القسم التالي.

استخدم عوامل التصفية للحد من المكان الذي تحصل منه على الأحداث

إذا كنت ترغب في الحصول على الأحداث فقط من -على سبيل المثال- قائمة انتظار واحدة أو اشتراك واحد داخل مساحة الاسم الخاصة بك، فيمكنك استخدام عوامل التصفية Begins with أو Ends with التي توفرها Event Grid. في بعض الواجهات، تسمى عوامل التصفية Pre وSuffix . إذا كنت ترغب في الحصول على أحداث لقوائم انتظار واشتراكات متعددة، ولكن ليس كلها، فيمكنك إنشاء اشتراكات شبكة أحداث متعددة وتوفير عامل تصفية لكل منها.

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

انظر الدروس التالية: