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