Aktivera identifiering av duplicerade meddelanden för en Azure Service Bus-kö eller ett ämne

När du aktiverar dubblettidentifiering för en kö eller ett ämne behåller Azure Service Bus en historik över alla meddelanden som skickas till kön eller ämnet under en konfigurerad tid. Under det intervallet lagrar inte kön eller ämnet några duplicerade meddelanden. Om du aktiverar den här egenskapen garanteras leverans exakt en gång under en användardefinierad tidsperiod. Mer information finns i Dubblettidentifiering. Den här artikeln visar olika sätt att aktivera duplicerad meddelandeidentifiering för en Service Bus-kö eller ett ämne.

Kommentar

  • Den grundläggande nivån för Service Bus stöder inte dubblettidentifiering. Standard- och Premium-nivåerna stöder dubblettidentifiering. Skillnader mellan dessa nivåer finns i Service Bus-priser.
  • Du kan inte aktivera eller inaktivera dubblettidentifiering när kön eller ämnet har skapats. Du kan bara göra det när du skapar kön eller ämnet.

Med Azure Portal

När du skapar en i Azure-portalen väljer du Aktivera dubblettidentifiering enligt följande bild. Du kan konfigurera storleken på dubblettidentifieringsfönstret när du skapar en kö eller ett ämne.

Enable duplicate detection at the time of the queue creation

När du skapar ett ämne i Azure-portalen väljer du Aktivera dubblettidentifiering enligt följande bild.

Enable duplicate detection at the time of the topic creation

Du kan också konfigurera den här inställningen för en befintlig kö eller ett befintligt ämne om du hade aktiverat dubblettidentifiering när du skapade den.

Uppdatera fönsterstorleken för dubblettidentifiering för en befintlig kö eller ett ämne

Om du vill ändra fönsterstorleken för dubblettidentifiering för en befintlig kö eller ett ämne går du till sidan Översikt och väljer Ändra för fönstret Duplicerad identifiering.

Set duplicate detection window size for a queue

Avsnitt

Set duplicate detection window size for a topic

Använda Azure CLI

Om du vill skapa en kö med dubblettidentifiering aktiverat använder du az servicebus queue create kommandot med --enable-duplicate-detection inställt på true.

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

Om du vill skapa ett ämne med dubblettidentifiering aktiverat använder du az servicebus topic create kommandot med --enable-duplicate-detection inställt på true.

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

Ovanstående exempel anger också storleken på dubblettidentifieringsfönstret med hjälp av parametern --duplicate-detection-history-time-window . Fönsterstorleken är inställd på en dag. Standardvärdet är 10 minuter och det högsta tillåtna värdet är sju dagar.

Om du vill uppdatera en kö med en ny storlek för az servicebus queue update identifieringsfönstret använder du kommandot med parametern --duplicate-detection-history-time-window . I det här exemplet uppdateras fönsterstorleken till sju dagar.

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

Om du vill uppdatera ett ämne med en ny fönsterstorlek för identifiering använder du az servicebus topic update kommandot med parametern --duplicate-detection-history-time-window . I det här exemplet uppdateras fönsterstorleken till sju dagar.

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

Använda Azure PowerShell

Om du vill skapa en kö med dubblettidentifiering aktiverat använder du New-AzServiceBusQueue kommandot med -RequiresDuplicateDetection inställt på $True.

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

Om du vill skapa ett ämne med dubblettidentifiering aktiverat använder du New-AzServiceBusTopic kommandot med -RequiresDuplicateDetection inställt på true.

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

Ovanstående exempel anger också storleken på dubblettidentifieringsfönstret med hjälp av parametern -DuplicateDetectionHistoryTimeWindow . Fönsterstorleken är inställd på en dag. Standardvärdet är 10 minuter och det högsta tillåtna värdet är sju dagar.

Information om hur du uppdaterar en kö med en ny storlek för identifieringsfönstret finns i följande exempel. I det här exemplet uppdateras fönsterstorleken till sju dagar.

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

$queue.DuplicateDetectionHistoryTimeWindow='P7D'

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

Information om hur du uppdaterar ett ämne med en ny storlek för identifieringsfönstret finns i följande exempel. I det här exemplet uppdateras fönsterstorleken till sju dagar.

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

$topic.DuplicateDetectionHistoryTimeWindow='P7D'

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

Använda Azure Resource Manager-mall

Om du vill skapa en kö med duplicerad identifiering aktiverad anger du requiresDuplicateDetection till true i avsnittet köegenskaper. Mer information finns i Mallreferens för Microsoft.ServiceBus-namnområden/köer. Ange ett värde för egenskapen för duplicateDetectionHistoryTimeWindow att ange storleken på det dubbla identifieringsfönstret. I följande exempel är det inställt på en dag.

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

Om du vill skapa ett ämne med dubblettidentifiering aktiverat anger du requiresDuplicateDetection till true i avsnittet ämnesegenskaper. Mer information finns i Mallreferens för Microsoft.ServiceBus-namnområden/ämnen.

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

Nästa steg

Prova exemplen på det språk du väljer för att utforska Azure Service Bus-funktioner.

Hitta exempel för de äldre .NET- och Java-klientbiblioteken nedan:

Den 30 september 2026 drar vi tillbaka Azure Service Bus SDK-biblioteken WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus och com.microsoft.azure.servicebus, som inte följer Riktlinjerna för Azure SDK. Vi kommer också att avsluta stödet för SBMP-protokollet, så du kommer inte längre att kunna använda det här protokollet efter den 30 september 2026. Migrera till de senaste Azure SDK-biblioteken, som erbjuder kritiska säkerhetsuppdateringar och förbättrade funktioner, före det datumet.

Även om de äldre biblioteken fortfarande kan användas efter den 30 september 2026 får de inte längre officiell support och uppdateringar från Microsoft. Mer information finns i meddelandet om supportavgång.