مشاركة عبر


تعيين موقع الرسالة الضائعة ونهج إعادة المحاولة

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

إشعار

لمعرفة المزيد حول تسليم الرسالة وإعادة المحاولة والرسائل الضائعة، راجع المقالة المفاهيمية: تسليم رسالة شبكة الأحداث وإعادة المحاولة.

تعيين موقع رسالة ضائعة

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

تحتاج إلى إنشاء حساب تخزين وحاوية كائن ثنائي كبير الحجم في التخزين قبل تشغيل الأوامر في هذه المقالة. تنشئ Event Grid الكائنات الثنائية كبيرة الحجم في هذه الحاوية. تحتوي أسماء الكائنات الثنائية كبيرة الحجم على اسم اشتراك Event Grid مع جميع الأحرف في الأحرف الكبيرة. على سبيل المثال، إذا كان اسم الاشتراك هو My-Blob-Subscription، فإن أسماء الكائنات الثنائية كبيرة الحجم للأحرف غير المستخدمة تحتوي على MY-BLOB-SUBSCRIPTION (myblobcontainer/MY-BLOB-SUBSCRIPTION/2019/8/8/5/111111111-1111-1111-1111-111111111111.json). الغرض من هذا السلوك هو الحماية من الاختلافات في معالجة الحالة بين خدمات Azure. في المثال، .../2019/8/8/5/... يمثل التاريخ غير الصفري والساعة (UTC): .../YYYY/MM/DD/HH/....'. تحتوي الكائنات الثنائية كبيرة الحجم غير المستخدمة التي تم إنشاؤها على حدث واحد أو أكثر في صفيف، وهو سلوك مهم يجب مراعاته عند معالجة الأحرف غير المستخدمة.

مدخل Azure

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

يمكنك اختياريا تمكين هوية مدارة معينة من قبل النظام أو معينة من قبل المستخدم للرسائل غير المستخدمة. يجب أن تكون الهوية المدارة عضوا في دور التحكم في الوصول استنادا إلى الدور (RBAC) الذي يسمح بكتابة الأحداث إلى التخزين.

لقطة شاشة تعرض تكوين الرسائل غير المستخدمة لاشتراك حدث.

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

لقطة شاشة تعرض تكوين الرسائل غير المستخدمة لاشتراك حدث موجود.

Azure CLI

containername=testcontainer

topicid=$(az eventgrid topic show --name demoTopic -g gridResourceGroup --query id --output tsv)
storageid=$(az storage account show --name demoStorage --resource-group gridResourceGroup --query id --output tsv)

az eventgrid event-subscription create \
  --source-resource-id $topicid \
  --name <event_subscription_name> \
  --endpoint <endpoint_URL> \
  --deadletter-endpoint $storageid/blobServices/default/containers/$containername

لإيقاف تشغيل الرسائل الضائعة، أعد تشغيل الأمر لإنشاء اشتراك الحدث ولكن لا تكتب قيمة ل deadletter-endpoint. لا حاجة إلى حذف اشتراك الحدث.

إشعار

إذا كنت تستخدم Azure CLI على جهازك المحلي، فاستخدم الإصدار 2.0.56 من Azure CLI أو أحدث. للحصول على تعليمات حول تثبيت أحدث إصدار من Azure CLI، انظرتثبيت Azure CLI.

PowerShell

$containername = "testcontainer"

$topicid = (Get-AzEventGridTopic -ResourceGroupName gridResourceGroup -Name demoTopic).Id
$storageid = (Get-AzStorageAccount -ResourceGroupName gridResourceGroup -Name demostorage).Id

New-AzEventGridSubscription `
  -ResourceId $topicid `
  -EventSubscriptionName <event_subscription_name> `
  -Endpoint <endpoint_URL> `
  -DeadLetterEndpoint "$storageid/blobServices/default/containers/$containername"

لإيقاف تشغيل الرسائل الضائعة، أعد تشغيل الأمر لإنشاء اشتراك الحدث ولكن لا تكتب قيمة ل DeadLetterEndpoint. لا حاجة إلى حذف اشتراك الحدث.

إشعار

إذا كنت تستخدم Azure PowerShell على جهازك المحلي، فاستخدم Azure PowerShell الإصدار 1.1.0 أو أحدث. تحميل وتثبيت أحدث إصدار من Azure PowerShell.

ضبط نهج إعادة المحاولة

عند إنشاء اشتراك شبكة الأحداث، بإمكانك تعيين قيم المدة التي يجب أن تحاول فيها شبكة الأحداث تسليم الحدث. بشكل افتراضي، تحاول Event Grid لمدة 24 ساعة (1440 دقيقة) أو 30 مرة. يمكنك تعيين أي من هذه القيم لاشتراك Event Grid. يجب أن تكون قيمة استمرار وقت الحدث عدد صحيح من 1 إلى 1440. يجب أن تكون قيمة أقصى عدد مرات إعادة المحاولة عددا صحيحا من 1 إلى 30.

لا يُمكنك تكوين جدول إعادة المحاولة.

مدخل Azure

أثناء إنشاء اشتراك حدث، يمكنك تكوين إعدادات نهج إعادة المحاولة في علامة التبويب ميزات إضافية.

لقطة شاشة تعرض تكوين نهج إعادة المحاولة لاشتراك حدث.

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

لقطة شاشة تعرض تكوين نهج إعادة المحاولة لاشتراك حدث موجود.

Azure CLI

لضبط وقت الحدث إلى قيمة أخرى غير 1440 دقيقة، استخدم:

az eventgrid event-subscription create \
  -g gridResourceGroup \
  --topic-name <topic_name> \
  --name <event_subscription_name> \
  --endpoint <endpoint_URL> \
  --event-ttl 720

لضبط أقصى عدد مرات إعادة المحاولة إلى قيمة أخرى غير 30، استخدم:

az eventgrid event-subscription create \
  -g gridResourceGroup \
  --topic-name <topic_name> \
  --name <event_subscription_name> \
  --endpoint <endpoint_URL> \
  --max-delivery-attempts 18

إشعار

إذا قمت بتعيين كل من event-ttl و max-deliver-attempts، فإن شبكة الأحداث تستخدم أولهما في انتهاء الصلاحية لتحديد متى يتم إيقاف تسليم الحدث. على سبيل المثال، إذا قمت بتعيين 30 دقيقة كوقت للعيش (TTL) و5 محاولات تسليم كحد أقصى. عندما لا يتم تسليم حدث بعد 30 دقيقة (أو) لا يتم تسليمه بعد خمس محاولات، أيهما يحدث أولا، يكون الحدث غير مستخدم. إذا قمت بتعيين الحد الأقصى لمحاولات التسليم إلى 10، فيما يتعلق بجدول إعادة المحاولة الأسي، فإن ستة عدد أقصى من محاولات التسليم يحدث قبل 30 دقيقة من الوصول إلى TTL، وبالتالي فإن تعيين الحد الأقصى لعدد المحاولات إلى 10 لن يكون له أي تأثير في هذه الحالة وسيتم إلغاء رسائل الأحداث بعد 30 دقيقة.

PowerShell

لضبط وقت الحدث إلى قيمة أخرى غير 1440 دقيقة، استخدم:

$topicid = (Get-AzEventGridTopic -ResourceGroupName gridResourceGroup -Name demoTopic).Id

New-AzEventGridSubscription `
  -ResourceId $topicid `
  -EventSubscriptionName <event_subscription_name> `
  -Endpoint <endpoint_URL> `
  -EventTtl 720

لضبط أقصى عدد مرات إعادة المحاولة إلى قيمة أخرى غير 30، استخدم:

$topicid = (Get-AzEventGridTopic -ResourceGroupName gridResourceGroup -Name demoTopic).Id

New-AzEventGridSubscription `
  -ResourceId $topicid `
  -EventSubscriptionName <event_subscription_name> `
  -Endpoint <endpoint_URL> `
  -MaxDeliveryAttempt 18

إشعار

إذا قمت بتعيين كل من event-ttl و max-deliver-attempts، فإن شبكة الأحداث تستخدم أولهما في انتهاء الصلاحية لتحديد متى يتم إيقاف تسليم الحدث. على سبيل المثال، إذا قمت بتعيين 30 دقيقة كوقت للعيش (TTL) و5 محاولات تسليم كحد أقصى. عندما لا يتم تسليم حدث بعد 30 دقيقة (أو) لا يتم تسليمه بعد خمس محاولات، أيهما يحدث أولا، يكون الحدث غير مستخدم. إذا قمت بتعيين الحد الأقصى لمحاولات التسليم إلى 10، فيما يتعلق بجدول إعادة المحاولة الأسي، فإن ستة عدد أقصى من محاولات التسليم يحدث قبل 30 دقيقة من الوصول إلى TTL، وبالتالي فإن تعيين الحد الأقصى لعدد المحاولات إلى 10 لن يكون له أي تأثير في هذه الحالة وسيتم إلغاء رسائل الأحداث بعد 30 دقيقة.