تمكين الكشف عن الرسائل المكررة لقائمة انتظار ناقل خدمة Azure أو موضوع

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

إشعار

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

استخدام مدخل Microsoft Azure

عند إنشاء قائمة انتظار في مدخل Microsoft Azure، حدد Enable duplicate detection كما هو موضح في الصورة التالية. يمكنك تكوين حجم نافذة الكشف عن التكرارات عند إنشاء قائمة انتظار أو موضوع.

Enable duplicate detection at the time of the queue creation

عند إنشاء موضوع في مدخل Microsoft Azure، حدد Enable duplicate detection كما هو موضح في الصورة التالية.

Enable duplicate detection at the time of the topic creation

يمكنك أيضاً تكوين هذا الإعداد لقائمة انتظار أو موضوع موجود، إذا كنت قد قمت بتمكين الكشف عن التكرارات في وقت الإنشاء.

تحديث حجم نافذة الكشف عن التكرار لقائمة انتظار أو موضوع موجود

لتغيير حجم نافذة الكشف عن التكرارات لقائمة انتظار أو موضوع موجود، في صفحة نظرة عامة، حدد Change لـ نافذة الكشف عن التكرارات.

الصف

Set duplicate detection window size for a queue

موضوع

Set duplicate detection window size for a topic

استخدام Azure CLI

لإنشاء قائمة انتظار مع تمكين الكشف عن التكرارات، استخدم الأمر az servicebus queue create مع تعيين --enable-duplicate-detection على true.

az servicebus queue create \
    --resource-group myresourcegroup \
    --namespace-name mynamespace \
    --name myqueue \
    --enable-duplicate-detection true \
    --duplicate-detection-history-time-window P1D

لإنشاء موضوع مع تمكين الكشف عن التكرارات، استخدم الأمر az servicebus topic create مع ضبط --enable-duplicate-detection على true.

az servicebus topic create \
    --resource-group myresourcegroup \
    --namespace-name mynamespace \
    --name mytopic \
    --enable-duplicate-detection true \
    --duplicate-detection-history-time-window P1D

تحدد الأمثلة أعلاه أيضاً حجم نافذة الكشف عن التكرارات باستخدام المعلمة --duplicate-detection-history-time-window. يتم تعيين حجم النافذة ليوم واحد. القيمة الافتراضية هي 10 دقائق والحد الأقصى المسموح به هو سبعة أيام.

لتحديث قائمة انتظار بحجم نافذة اكتشاف جديد، استخدم الأمر az servicebus queue update مع المعلمة --duplicate-detection-history-time-window. في هذا المثال، يتم تحديث حجم النافذة إلى سبعة أيام.

az servicebus queue update \
    --resource-group myresourcegroup \
    --namespace-name mynamespace \
    --name myqueue \
    --duplicate-detection-history-time-window P7D

وبالمثل، لتحديث موضوع بحجم نافذة اكتشاف جديد، استخدم الأمر az servicebus topic update مع المعلمة --duplicate-detection-history-time-window. في هذا المثال، يتم تحديث حجم النافذة إلى سبعة أيام.

az servicebus topic update \
    --resource-group myresourcegroup \
    --namespace-name mynamespace \
    --name myqueue \
    --duplicate-detection-history-time-window P7D

باستخدام Azure PowerShell

لإنشاء قائمة انتظار مع تمكين الكشف عن التكرارات، استخدم الأمر New-AzServiceBusQueue مع تعيين -RequiresDuplicateDetection على $True.

New-AzServiceBusQueue -ResourceGroup myresourcegroup `
    -NamespaceName mynamespace `
    -QueueName myqueue `
    -RequiresDuplicateDetection $True `
    -DuplicateDetectionHistoryTimeWindow P1D

لإنشاء موضوع مع تمكين الكشف عن التكرارات، استخدم الأمر New-AzServiceBusTopic مع ضبط -RequiresDuplicateDetection على true.

New-AzServiceBusTopic -ResourceGroup myresourcegroup `
    -NamespaceName mynamespace `
    -Name mytopic `
    -RequiresDuplicateDetection $True
    -DuplicateDetectionHistoryTimeWindow P1D

تحدد الأمثلة أعلاه أيضاً حجم نافذة الكشف عن التكرارات باستخدام المعلمة -DuplicateDetectionHistoryTimeWindow. يتم تعيين حجم النافذة ليوم واحد. القيمة الافتراضية هي 10 دقائق والحد الأقصى المسموح به هو سبعة أيام.

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

$queue=Get-AzServiceBusQueue -ResourceGroup myresourcegroup `
    -NamespaceName mynamespace `
    -QueueName myqueue 

$queue.DuplicateDetectionHistoryTimeWindow='P7D'

Set-AzServiceBusQueue -ResourceGroup myresourcegroup `
    -NamespaceName mynamespace `
    -QueueName myqueue `
    -QueueObj $queue

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

$topic=Get-AzServiceBusTopic -ResourceGroup myresourcegroup `
    -NamespaceName mynamespace `
    -Name mytopic

$topic.DuplicateDetectionHistoryTimeWindow='P7D'

Set-AzServiceBusTopic -ResourceGroup myresourcegroup `
    -NamespaceName mynamespace `
    -Name mytopic `
    -TopicObj $topic

استخدام قالب Azure Resource Manager

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

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "serviceBusNamespaceName": {
      "type": "string",
      "metadata": {
        "description": "Name of the Service Bus namespace"
      }
    },
    "serviceBusQueueName": {
      "type": "string",
      "metadata": {
        "description": "Name of the Queue"
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Location for all resources."
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.ServiceBus/namespaces",
      "apiVersion": "2018-01-01-preview",
      "name": "[parameters('serviceBusNamespaceName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "Standard"
      },
      "properties": {},
      "resources": [
        {
          "type": "Queues",
          "apiVersion": "2017-04-01",
          "name": "[parameters('serviceBusQueueName')]",
          "dependsOn": [
            "[resourceId('Microsoft.ServiceBus/namespaces', parameters('serviceBusNamespaceName'))]"
          ],
          "properties": {
            "requiresDuplicateDetection": true,
            "duplicateDetectionHistoryTimeWindow": "P1D"
          }
        }
      ]
    }
  ]
}

لإنشاء موضوع مع تمكين الكشف عن التكرارات، اضبطrequiresDuplicateDetection إلىtrue في قسم خصائص الموضوع. لمزيد من المعلومات، راجع مرجع قوالب مساحات / موضوعات Microsoft.ServiceBus.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "service_BusNamespace_Name": {
      "type": "string",
      "metadata": {
        "description": "Name of the Service Bus namespace"
      }
    },
    "serviceBusTopicName": {
      "type": "string",
      "metadata": {
        "description": "Name of the Topic"
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Location for all resources."
      }
    }
  },
  "resources": [
    {
      "apiVersion": "2018-01-01-preview",
      "name": "[parameters('service_BusNamespace_Name')]",
      "type": "Microsoft.ServiceBus/namespaces",
      "location": "[parameters('location')]",
      "sku": {
        "name": "Standard"
      },
      "properties": {},
      "resources": [
        {
          "apiVersion": "2017-04-01",
          "name": "[parameters('serviceBusTopicName')]",
          "type": "topics",
          "dependsOn": [
            "[resourceId('Microsoft.ServiceBus/namespaces/', parameters('service_BusNamespace_Name'))]"
          ],
          "properties": {
            "requiresDuplicateDetection": true,
            "duplicateDetectionHistoryTimeWindow": "P1D"
          }
        }
      ]
    }
  ]
}

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

جرب العينات باللغة التي تختارها لاستكشاف ميزات ناقل خدمة Microsoft Azure.

ابحث عن نماذج لمكتبات عملاء NET. وJava الأقدم أدناه:

في 30 سبتمبر 2026، سنتقاعد مكتبات SDK ناقل خدمة Azure WindowsAzure.ServiceBus وMicrosoft.Azure.ServiceBus و com.microsoft.azure.servicebus، والتي لا تتوافق مع إرشادات Azure SDK. سننهي أيضا دعم بروتوكول SBMP، لذلك لن تتمكن من استخدام هذا البروتوكول بعد 30 سبتمبر 2026. قم بالترحيل إلى أحدث مكتبات Azure SDK، والتي توفر تحديثات أمان هامة وقدرات محسنة، قبل ذلك التاريخ.

على الرغم من أنه لا يزال من الممكن استخدام المكتبات القديمة بعد 30 سبتمبر 2026، إلا أنها لن تتلقى بعد ذلك الدعم والتحديثات الرسمية من Microsoft. لمزيد من المعلومات، راجع إعلان إيقاف الدعم.