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

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

ملاحظة

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

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

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

ملاحظة

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

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

عند إنشاء اشتراك شبكة الأحداث، بإمكانك تعيين قيم المدة التي يجب أن تحاول فيها شبكة الأحداث تسليم الحدث. افتراضيًا، ستحاول "شبكة الأحداث" لمدة 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 دقيقة (أو) لا يتم تسليمه بعد 5 محاولات، أيهما يحدث أولا، يكون الحدث غير مستخدم. إذا قمت بتعيين الحد الأقصى لمحاولات التسليم إلى 10، فيما يتعلق بجدول إعادة المحاولة الأسي، فإن الحد الأقصى لعدد محاولات التسليم 6 مرات يحدث قبل الوصول إلى TTL لمدة 30 دقيقة، وبالتالي فإن تعيين الحد الأقصى لعدد المحاولات إلى 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 دقيقة (أو) لا يتم تسليمه بعد 5 محاولات، أيهما يحدث أولا، يكون الحدث غير مستخدم. إذا قمت بتعيين الحد الأقصى لمحاولات التسليم إلى 10، فيما يتعلق بجدول إعادة المحاولة الأسي، فإن الحد الأقصى لعدد محاولات التسليم 6 مرات يحدث قبل الوصول إلى TTL لمدة 30 دقيقة، وبالتالي فإن تعيين الحد الأقصى لعدد المحاولات إلى 10 لن يكون له أي تأثير في هذه الحالة وسيتم إلغاء توجيه الأحداث بعد 30 دقيقة.

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