Włączanie wykrywania zduplikowanych komunikatów dla kolejki usługi Azure Service Bus lub tematu

Po włączeniu wykrywania duplikatów dla kolejki lub tematu usługa Azure Service Bus przechowuje historię wszystkich komunikatów wysyłanych do kolejki lub tematu przez skonfigurowany czas. W tym interwale kolejka lub temat nie będą przechowywać żadnych zduplikowanych komunikatów. Włączenie tej właściwości gwarantuje dokładnie jednokrotne dostarczanie przez zdefiniowany przez użytkownika przedział czasu. Aby uzyskać więcej informacji, zobacz Wykrywanie duplikatów. W tym artykule przedstawiono różne sposoby włączania wykrywania zduplikowanych komunikatów dla kolejki usługi Service Bus lub tematu.

Uwaga

  • Warstwa podstawowa usługi Service Bus nie obsługuje wykrywania duplikatów. Wykrywanie duplikatów obsługują warstwy Standardowa i Premium. Aby uzyskać różnice między tymi warstwami, zobacz Cennik usługi Service Bus.
  • Nie można włączyć ani wyłączyć wykrywania duplikatów po utworzeniu kolejki lub tematu. Można to zrobić tylko w momencie tworzenia kolejki lub tematu.

Przy użyciu witryny Azure Portal

Podczas tworzenia kolejki w witrynie Azure Portal wybierz pozycję Włącz wykrywanie duplikatów , jak pokazano na poniższej ilustracji. Rozmiar okna wykrywania duplikatów można skonfigurować podczas tworzenia kolejki lub tematu.

Enable duplicate detection at the time of the queue creation

Podczas tworzenia tematu w witrynie Azure Portal wybierz pozycję Włącz wykrywanie duplikatów , jak pokazano na poniższej ilustracji.

Enable duplicate detection at the time of the topic creation

To ustawienie można również skonfigurować dla istniejącej kolejki lub tematu, jeśli podczas tworzenia włączono wykrywanie duplikatów.

Aktualizowanie rozmiaru okna wykrywania duplikatów dla istniejącej kolejki lub tematu

Aby zmienić rozmiar okna wykrywania duplikatów dla istniejącej kolejki lub tematu, na stronie Przegląd wybierz pozycję Zmień dla okna wykrywania duplikatów.

Kolejka

Set duplicate detection window size for a queue

Temat

Set duplicate detection window size for a topic

Korzystanie z interfejsu wiersza polecenia platformy Azure

Aby utworzyć kolejkę z włączonym wykrywaniem duplikatów, użyj az servicebus queue create polecenia z ustawioną wartością --enable-duplicate-detectiontrue.

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

Aby utworzyć temat z włączonym wykrywaniem duplikatów, użyj az servicebus topic create polecenia z ustawioną wartością --enable-duplicate-detectiontrue.

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

Powyższe przykłady ustawiają również rozmiar okna wykrywania duplikatów przy użyciu parametru --duplicate-detection-history-time-window . Rozmiar okna jest ustawiony na jeden dzień. Wartość domyślna to 10 minut, a maksymalna dozwolona wartość to siedem dni.

Aby zaktualizować kolejkę przy użyciu nowego rozmiaru okna wykrywania, użyj az servicebus queue update polecenia z parametrem --duplicate-detection-history-time-window . W tym przykładzie rozmiar okna jest aktualizowany do siedmiu dni.

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

Podobnie, aby zaktualizować temat przy użyciu nowego rozmiaru okna wykrywania, użyj az servicebus topic update polecenia z parametrem --duplicate-detection-history-time-window . W tym przykładzie rozmiar okna jest aktualizowany do siedmiu dni.

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

Korzystanie z programu Azure PowerShell

Aby utworzyć kolejkę z włączonym wykrywaniem duplikatów, użyj New-AzServiceBusQueue polecenia z ustawioną wartością -RequiresDuplicateDetection$True.

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

Aby utworzyć temat z włączonym wykrywaniem duplikatów, użyj New-AzServiceBusTopic polecenia z ustawioną wartością -RequiresDuplicateDetectiontrue.

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

Powyższe przykłady ustawiają również rozmiar okna wykrywania duplikatów przy użyciu parametru -DuplicateDetectionHistoryTimeWindow . Rozmiar okna jest ustawiony na jeden dzień. Wartość domyślna to 10 minut, a maksymalna dozwolona wartość to siedem dni.

Aby zaktualizować kolejkę przy użyciu nowego rozmiaru okna wykrywania, zobacz poniższy przykład. W tym przykładzie rozmiar okna jest aktualizowany do siedmiu dni.

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

$queue.DuplicateDetectionHistoryTimeWindow='P7D'

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

Aby zaktualizować temat przy użyciu nowego rozmiaru okna wykrywania, zobacz poniższy przykład. W tym przykładzie rozmiar okna jest aktualizowany do siedmiu dni.

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

$topic.DuplicateDetectionHistoryTimeWindow='P7D'

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

Korzystanie z szablonu usługi Azure Resource Manager

Aby utworzyć kolejkę z włączonym wykrywaniem duplikatów, ustaw wartość requiresDuplicateDetection na true w sekcji właściwości kolejki. Aby uzyskać więcej informacji, zobacz Dokumentacja szablonu przestrzeni nazw/kolejek Microsoft.ServiceBus. Określ wartość właściwości duplicateDetectionHistoryTimeWindow , aby ustawić rozmiar okna wykrywania duplikatów. W poniższym przykładzie jest ona ustawiona na jeden dzień.

{
  "$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"
          }
        }
      ]
    }
  ]
}

Aby utworzyć temat z włączonym wykrywaniem duplikatów, ustaw wartość requiresDuplicateDetection na true w sekcji właściwości tematu. Aby uzyskać więcej informacji, zobacz Microsoft.ServiceBus namespaces/topics template reference (Dokumentacja szablonu przestrzeni nazw/tematów 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"
          }
        }
      ]
    }
  ]
}

Następne kroki

Wypróbuj przykłady w wybranym języku, aby zapoznać się z funkcjami usługi Azure Service Bus.

Znajdź przykłady dla starszych bibliotek klienckich .NET i Java poniżej:

30 września 2026 r. wycofamy biblioteki zestawu SDK usługi Azure Service Bus WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus i com.microsoft.azure.servicebus, które nie są zgodne z wytycznymi dotyczącymi zestawu Azure SDK. Zakończymy również obsługę protokołu SBMP, więc nie będzie można już używać tego protokołu po 30 września 2026 r. Przeprowadź migrację do najnowszych bibliotek zestawu Azure SDK, które oferują krytyczne aktualizacje zabezpieczeń i ulepszone możliwości przed tą datą.

Mimo że starsze biblioteki mogą być nadal używane poza 30 września 2026 r., nie będą już otrzymywać oficjalnej pomocy technicznej i aktualizacji od firmy Microsoft. Aby uzyskać więcej informacji, zobacz ogłoszenie o wycofaniu pomocy technicznej.