Povolení detekce duplicitních zpráv pro frontu služby Azure Service Bus nebo téma

Když povolíte zjišťování duplicit pro frontu nebo téma, Azure Service Bus uchovává historii všech zpráv odesílaných do fronty nebo tématu po dobu konfigurace. Během tohoto intervalu se ve frontě nebo tématu neukládají žádné duplicitní zprávy. Povolení této vlastnosti zaručuje přesně jednou doručení v čase definovaném uživatelem. Další informace najdete v tématu Detekce duplicit. Tento článek popisuje různé způsoby povolení detekce duplicitních zpráv pro frontu služby Service Bus nebo téma.

Poznámka:

  • Úroveň Basic služby Service Bus nepodporuje detekci duplicit. Úrovně Standard a Premium detekci duplicit podporují. Rozdíly mezi těmito úrovněmi najdete v tématu Ceny služby Service Bus.
  • Po vytvoření fronty nebo tématu nemůžete povolit nebo zakázat detekci duplicit. Můžete to udělat jenom v době vytvoření fronty nebo tématu.

Pomocí webu Azure Portal

Při vytváření fronty na webu Azure Portal vyberte Povolit detekci duplicit, jak je znázorněno na následujícím obrázku. Při vytváření fronty nebo tématu můžete nakonfigurovat velikost okna detekce duplicit.

Enable duplicate detection at the time of the queue creation

Při vytváření tématu na webu Azure Portal vyberte Povolit detekci duplicit, jak je znázorněno na následujícím obrázku.

Enable duplicate detection at the time of the topic creation

Toto nastavení můžete také nakonfigurovat pro existující frontu nebo téma, pokud jste při vytváření povolili detekci duplicit.

Aktualizace velikosti okna detekce duplicit pro existující frontu nebo téma

Pokud chcete změnit velikost okna detekce duplicit pro existující frontu nebo téma, vyberte na stránce Přehled možnost Změnit pro okno detekce duplicit.

Fronta

Set duplicate detection window size for a queue

Téma

Set duplicate detection window size for a topic

Použití Azure CLI

Chcete-li vytvořit frontu s povolenou detekcí duplicit, použijte az servicebus queue create příkaz s nastaveným --enable-duplicate-detection na true.

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

Chcete-li vytvořit téma s povolenou detekcí duplicit, použijte az servicebus topic create příkaz s --enable-duplicate-detection nastaveným na true.

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

Výše uvedené příklady také pomocí parametru --duplicate-detection-history-time-window nastavují velikost okna detekce duplicit. Velikost okna je nastavená na jeden den. Výchozí hodnota je 10 minut a maximální povolená hodnota je sedm dní.

Pokud chcete aktualizovat frontu s novou velikostí okna detekce, použijte az servicebus queue update příkaz s parametrem --duplicate-detection-history-time-window . V tomto příkladu se velikost okna aktualizuje na sedm dní.

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

Podobně k aktualizaci tématu s novou velikostí okna detekce použijte az servicebus topic update příkaz s parametrem --duplicate-detection-history-time-window . V tomto příkladu se velikost okna aktualizuje na sedm dní.

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

Použití Azure Powershell

Chcete-li vytvořit frontu s povolenou detekcí duplicit, použijte New-AzServiceBusQueue příkaz s nastaveným -RequiresDuplicateDetection na $True.

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

Chcete-li vytvořit téma s povolenou detekcí duplicit, použijte New-AzServiceBusTopic příkaz s -RequiresDuplicateDetection nastaveným na true.

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

Výše uvedené příklady také pomocí parametru -DuplicateDetectionHistoryTimeWindow nastavují velikost okna detekce duplicit. Velikost okna je nastavená na jeden den. Výchozí hodnota je 10 minut a maximální povolená hodnota je sedm dní.

Pokud chcete aktualizovat frontu s novou velikostí okna detekce, podívejte se na následující příklad. V tomto příkladu se velikost okna aktualizuje na sedm dní.

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

$queue.DuplicateDetectionHistoryTimeWindow='P7D'

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

Pokud chcete aktualizovat téma o nové velikosti okna detekce, podívejte se na následující příklad. V tomto příkladu se velikost okna aktualizuje na sedm dní.

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

$topic.DuplicateDetectionHistoryTimeWindow='P7D'

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

Pomocí šablony Azure Resource Manageru

Pokud chcete vytvořit frontu s povolenou detekcí duplicit, nastavte requiresDuplicateDetection ji true v části vlastností fronty. Další informace naleznete v tématu Microsoft.ServiceBus namespaces/queues template reference. Zadejte hodnotu vlastnosti, duplicateDetectionHistoryTimeWindow která nastaví velikost okna detekce duplicit. V následujícím příkladu je nastavená na jeden den.

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

Pokud chcete vytvořit téma s povolenou detekcí duplicit, nastavte requiresDuplicateDetection v true části vlastností tématu. Další informace naleznete v tématu Microsoft.ServiceBus namespaces/topics template reference.

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

Další kroky

Vyzkoušejte ukázky v jazyce podle vašeho výběru a prozkoumejte funkce služby Azure Service Bus.

Ukázky pro starší klientské knihovny .NET a Java najdete níže:

30. září 2026 vyřadíme knihovny sady SDK služby Azure Service Bus pro WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus a com.microsoft.azure.servicebus, které nevyhovují pokynům sady Azure SDK. Také ukončíme podporu protokolu SBMP, takže tento protokol už nebudete moct používat po 30. září 2026. Před tímto datem migrujte na nejnovější knihovny sady Azure SDK, které nabízejí důležité aktualizace zabezpečení a vylepšené funkce.

I když starší knihovny je možné používat i po 30. září 2026, nebudou už od Microsoftu dostávat oficiální podporu a aktualizace. Další informace najdete v oznámení o vyřazení podpory.