Habilitación de la detección de mensajes duplicados para una cola o un tema de Azure Service Bus

Cuando se habilita la detección de duplicados para una cola o un tema, Azure Service Bus conserva el historial de todos los mensajes enviados a la cola o al tema durante un período de tiempo configurado. Durante ese intervalo, la cola o el tema no almacenarán ningún mensaje duplicado. Al habilitar esta propiedad, se garantiza exactamente una entrega durante un intervalo de tiempo concreto definido por el usuario. Para obtener más información, consulte Detección de duplicados. En este artículo se muestran las distintas formas de habilitar la detección de mensajes duplicados para una cola o un tema de Service Bus.

Nota

  • El nivel Básico de Service Bus no admite la detección de duplicados. Los niveles Estándar y Premium admiten la detección de duplicados. Para conocer las diferencias entre estos niveles, consulte Precios de Service Bus.
  • No puede habilitar ni deshabilitar la detección de duplicados después de crear la cola o el tema. Solo puede hacerlo en el momento de creación de la cola o el tema.

Uso de Azure Portal

Al crear una cola en Azure Portal, seleccione Habilitar detección de duplicados, como se muestra en la imagen siguiente. Puede configurar el tamaño de la ventana de detección de duplicados al crear una cola o un tema.

Enable duplicate detection at the time of the queue creation

Al crear un tema en Azure Portal, seleccione Habilitar detección de duplicados, como se muestra en la imagen siguiente.

Enable duplicate detection at the time of the topic creation

También puede configurar este valor para una cola o un tema existente, si había habilitado la detección de duplicados en el momento de crearlos.

Actualización del tamaño de la ventana de detección de duplicados de una cola o un tema existente

Para cambiar el tamaño de la ventana de detección de duplicados de una cola o un tema existente, seleccione Cambiar en la página Información general de la Ventana de detección de duplicados.

Cola

Set duplicate detection window size for a queue

Tema

Set duplicate detection window size for a topic

Uso de la CLI de Azure

Para crear una cola con la detección de duplicados habilitada, use el comando az servicebus queue create con --enable-duplicate-detection establecido en true.

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

Para crear un tema con la detección de duplicados habilitada, use el comando az servicebus topic create con --enable-duplicate-detection establecido en true.

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

En los ejemplos anteriores, también se establece el tamaño de la ventana de detección de duplicados mediante el parámetro --duplicate-detection-history-time-window. El tamaño de la ventana se establece en un día. El valor predeterminado es de 10 minutos y el valor máximo permitido es de siete días.

Para actualizar una cola con un nuevo tamaño de la ventana de detección, use el comando az servicebus queue update con el parámetro --duplicate-detection-history-time-window. En este ejemplo, el tamaño de la ventana se actualiza a siete días.

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

Para actualizar un tema con un nuevo tamaño de la ventana de detección, use el comando az servicebus topic update con el parámetro --duplicate-detection-history-time-window. En este ejemplo, el tamaño de la ventana se actualiza a siete días.

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

Uso de Azure PowerShell

Para crear una cola con la detección de duplicados habilitada, use el comando New-AzServiceBusQueue con -RequiresDuplicateDetection establecido en $True.

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

Para crear un tema con la detección de duplicados habilitada, use el comando New-AzServiceBusTopic con -RequiresDuplicateDetection establecido en true.

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

En los ejemplos anteriores, también se establece el tamaño de la ventana de detección de duplicados mediante el parámetro -DuplicateDetectionHistoryTimeWindow. El tamaño de la ventana se establece en un día. El valor predeterminado es de 10 minutos y el valor máximo permitido es de siete días.

Para actualizar una cola con un nuevo tamaño de la ventana de detección, vea el ejemplo siguiente. En este ejemplo, el tamaño de la ventana se actualiza a siete días.

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

$queue.DuplicateDetectionHistoryTimeWindow='P7D'

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

Para actualizar un tema con un nuevo tamaño de la ventana de detección, vea el ejemplo siguiente. En este ejemplo, el tamaño de la ventana se actualiza a siete días.

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

$topic.DuplicateDetectionHistoryTimeWindow='P7D'

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

Uso de la plantilla de Azure Resource Manager

Para crear una cola con la detección de duplicados habilitada, establezca requiresDuplicateDetection en true en la sección de propiedades de la cola. Para obtener más información, consulte el documento de referencia de la plantilla de Microsoft.ServiceBus namespaces/queues. Especifique un valor para la propiedad duplicateDetectionHistoryTimeWindow a fin de establecer el tamaño de la ventana de detección de duplicados. En el ejemplo siguiente, se establece en un día.

{
  "$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 crear un tema con la detección de duplicados habilitada, establezca requiresDuplicateDetection en true en la sección de propiedades del tema. Para obtener más información, consulte el documento de referencia de la plantilla de Microsoft.ServiceBus namespaces/topics.

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

Pasos siguientes

Pruebe los ejemplos en el lenguaje que prefiera para explorar las características de Azure Service Bus.

A continuación, encontrará ejemplos de las bibliotecas cliente de .NET y Java anteriores:

El 30 de septiembre de 2026, retiraremos las bibliotecas del SDK de Azure Service Bus WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus y com.microsoft.azure.servicebus, que no se ajustan a las directrices del SDK de Azure. También finalizaremos la compatibilidad con el protocolo SBMP, por lo que ya no podrá usar este protocolo después del 30 de septiembre de 2026. Migre a las bibliotecas más recientes del SDK de Azure, que ofrecen actualizaciones de seguridad críticas y funcionalidades mejoradas, antes de esa fecha.

Aunque las bibliotecas anteriores todavía se pueden usar después del 30 de septiembre de 2026, ya no recibirán soporte técnico oficial ni actualizaciones de Microsoft. Para obtener más información, consulte el anuncio de retirada de soporte técnico.