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

Quando você habilita a detecção de duplicidades 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á nenhuma mensagem duplicada. A habilitação dessa propriedade garante a entrega exatamente uma vez por um período de tempo definido pelo usuário. Para saber mais, confira Detecção de duplicidades. Este artigo mostra diferentes maneiras de habilitar a detecção de mensagens duplicadas para uma fila ou um tópico do Barramento de Serviço do Azure.

Observação

  • A camada básica do Barramento de Serviço do Azure não dá suporte à detecção de duplicidades. As camadas Standard e Premium dão suporte à detecção de duplicidades. Para conferir as diferenças entre essas camadas, consulte preços do Barramento de Serviço.
  • Você não pode ativar nem desativar a detecção de duplicidades após a criação da fila ou tópico. Você só poderá fazer isso no momento da criação da fila ou do tópico.

Usando o Portal do Azure

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

Enable duplicate detection at the time of the queue creation

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

Enable duplicate detection at the time of the topic creation

Você também poderá definir essa configuração para uma fila ou tópico existente se tiver habilitado a detecção de duplicidades no momento da criação.

Atualizar o tamanho da janela de detecção de duplicidades para uma fila ou um tópico existente

Para alterar o tamanho da janela de detecção de duplicidades de uma fila ou de um tópico existente, na página Visão geral, selecione Alterar para Janela de detecção de duplicidades.

Fila

Set duplicate detection window size for a queue

Tópico

Set duplicate detection window size for a topic

Usando a CLI do Azure

Para criar uma fila com a detecção de duplicidades habilitada, use o comando az servicebus queue create com --enable-duplicate-detection definido 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 detecção de duplicidades habilitada, use o comando az servicebus topic create com --enable-duplicate-detection definido como true.

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

Usando o parâmetro --duplicate-detection-history-time-window, os exemplos acima também definem o tamanho da janela de detecção de duplicidades. O tamanho da janela é definido como um dia. O valor padrão é 10 minutos, e o valor máximo permitido é de sete dias.

Para atualizar uma fila com um novo tamanho de janela de detecção, use o comando az servicebus queue update com o parâmetro --duplicate-detection-history-time-window. 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

De forma semelhante, para atualizar um tópico com um novo tamanho de janela de detecção, use o comando az servicebus topic update com o parâmetro --duplicate-detection-history-time-window. 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

Usando o PowerShell do Azure

Para criar uma fila com a detecção de duplicidades habilitada, use o comando New-AzServiceBusQueue com -RequiresDuplicateDetection definido como $True.

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

Para criar um tópico com a detecção de duplicidades habilitada, use o comando New-AzServiceBusTopic com -RequiresDuplicateDetection definido como true.

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

Usando o parâmetro -DuplicateDetectionHistoryTimeWindow, os exemplos acima também definem o tamanho da janela de detecção de duplicidades. O tamanho da janela é definido como um dia. O valor padrão é 10 minutos, e o valor máximo permitido é de sete dias.

Para atualizar uma fila com um novo tamanho de janela de detecção, confira 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 detecção, confira 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

Usar o modelo do Azure Resource Manager

Para criar uma fila com a detecção de duplicidades habilitada, defina requiresDuplicateDetection como true na seção de propriedades da fila. Para obter mais informações, confira Referência de modelo de namespaces/filas do Microsoft.ServiceBus. Especifique um valor para a propriedade duplicateDetectionHistoryTimeWindow para definir o tamanho da janela de detecção de duplicidades. No exemplo a seguir, ela é definida 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 detecção de duplicidades habilitada, defina requiresDuplicateDetection como true na seção de propriedades do tópico. Para obter mais informações, confira 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óximas etapas

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

Encontre amostras 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, portanto, ele não poderá mais ser usado 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, confira o anúncio de desativação do suporte.