Partilhar via


Habilitar a deteção de mensagens duplicadas para uma fila ou um tópico do Barramento de Serviço do Azure

Quando você habilita a deteção de duplicados para uma fila ou tópico, o Barramento de Serviço do Azure mantém um histórico de todas as mensagens enviadas para a fila ou tópico por um período de tempo de configuração. Durante esse intervalo, sua fila ou tópico não armazenará mensagens duplicadas. Habilitar essa propriedade garante exatamente uma entrega ao longo de um período de tempo definido pelo usuário. Para obter mais informações, consulte Deteção de duplicatas. Este artigo mostra diferentes maneiras de habilitar a deteção de mensagens duplicadas para uma fila do Service Bus ou um tópico.

Nota

  • A camada básica do Service Bus não oferece suporte à deteção de duplicados. Os escalões standard e premium suportam a deteção de duplicados. Para conhecer as diferenças entre esses níveis, consulte Preços do Service Bus.
  • Não é possível ativar ou desativar a deteção de duplicados após a criação da fila ou do tópico. Você só pode fazer isso no momento da criação da fila ou tópico.

Através do portal do Azure

Ao criar uma fila no portal do Azure, selecione Habilitar deteção de duplicatas , conforme mostrado na imagem a seguir. Você pode configurar o tamanho da janela de deteção de duplicados ao criar uma fila ou tópico.

Enable duplicate detection at the time of the queue creation

Ao criar um tópico no portal do Azure, selecione Habilitar deteção de duplicatas , conforme mostrado na imagem a seguir.

Enable duplicate detection at the time of the topic creation

Você também pode definir essa configuração para uma fila ou tópico existente, se tiver habilitado a deteção de duplicados no momento da criação.

Atualizar o tamanho da janela de deteção de duplicados para uma fila ou tópico existente

Para alterar o tamanho da janela de deteção de duplicados para uma fila ou tópico existente, na página Visão geral , selecione Alterar para a janela de deteção de duplicatas.

Fila

Set duplicate detection window size for a queue

Tópico

Set duplicate detection window size for a topic

Utilizar a CLI do Azure

Para criar uma fila com a deteção de duplicados habilitada, use o az servicebus queue create comando set --enable-duplicate-detection como true.

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

Para criar um tópico com a deteção de duplicados habilitada, use o az servicebus topic create comando com --enable-duplicate-detection set como true.

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

Os exemplos acima também definem o tamanho da janela de deteção de duplicados usando o --duplicate-detection-history-time-window parâmetro. O tamanho da janela é definido para um dia. O valor padrão é 10 minutos e o valor máximo permitido é sete dias.

Para atualizar uma fila com um novo tamanho de janela de deteção, use o comando com o az servicebus queue update --duplicate-detection-history-time-window parâmetro. Neste exemplo, o tamanho da janela é atualizado para sete dias.

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

Da mesma forma, para atualizar um tópico com um novo tamanho de janela de deteção, use o comando com o az servicebus topic update --duplicate-detection-history-time-window parâmetro. Neste exemplo, o tamanho da janela é atualizado para sete dias.

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

Utilizar o Azure PowerShell

Para criar uma fila com a deteção de duplicados habilitada, use o New-AzServiceBusQueue comando set -RequiresDuplicateDetection como $True.

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

Para criar um tópico com a deteção de duplicados habilitada, use o New-AzServiceBusTopic comando com -RequiresDuplicateDetection set como true.

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

Os exemplos acima também definem o tamanho da janela de deteção de duplicados usando o -DuplicateDetectionHistoryTimeWindow parâmetro. O tamanho da janela é definido para um dia. O valor padrão é 10 minutos e o valor máximo permitido é sete dias.

Para atualizar uma fila com um novo tamanho de janela de deteção, consulte o exemplo a seguir. Neste exemplo, o tamanho da janela é atualizado para sete dias.

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

$queue.DuplicateDetectionHistoryTimeWindow='P7D'

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

Para atualizar um tópico com um novo tamanho de janela de deteção, consulte o exemplo a seguir. Neste exemplo, o tamanho da janela é atualizado para sete dias.

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

$topic.DuplicateDetectionHistoryTimeWindow='P7D'

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

Com o modelo do Azure Resource Manager

Para criar uma fila com a deteção de duplicados habilitada, defina requiresDuplicateDetection como true na seção de propriedades da fila. Para obter mais informações, consulte Referência de modelo de namespaces/filas do Microsoft.ServiceBus. Especifique um valor para a duplicateDetectionHistoryTimeWindow propriedade para definir o tamanho da janela de deteção de duplicatas. No exemplo a seguir, ele é definido como um dia.

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

Para criar um tópico com a deteção de duplicados habilitada, defina requiresDuplicateDetection como true na seção de propriedades do tópico. Para obter mais informações, consulte Referência de modelo de namespaces/tópicos do 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"
          }
        }
      ]
    }
  ]
}

Próximos passos

Experimente os exemplos no idioma de sua escolha para explorar os recursos do Barramento de Serviço do Azure.

Encontre exemplos para as bibliotecas de cliente .NET e Java mais antigas abaixo:

Em 30 de setembro de 2026, desativaremos as bibliotecas do SDK do Barramento de Serviço do Azure WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus e com.microsoft.azure.servicebus, que não estão em conformidade com as diretrizes do SDK do Azure. Também encerraremos o suporte ao protocolo SBMP, para que você não possa mais usar esse protocolo após 30 de setembro de 2026. Migre para as bibliotecas mais recentes do SDK do Azure, que oferecem atualizações de segurança críticas e recursos aprimorados, antes dessa data.

Embora as bibliotecas mais antigas ainda possam ser usadas após 30 de setembro de 2026, elas não receberão mais suporte e atualizações oficiais da Microsoft. Para obter mais informações, consulte o anúncio de aposentadoria de suporte.