Habilitar mensagens mortas no término da mensagem das filas e das assinaturas do Barramento de Serviço do Azure

As filas e as assinaturas do Barramento de Serviço do Azure para tópicos fornecem uma subfila secundária chamada DLQ (fila de mensagens mortas). A fila de mensagens mortas não precisa ser explicitamente criada e não pode ser excluída ou gerenciada independentemente da entidade principal. A finalidade da fila de mensagens mortas é manter mensagens que não podem ser entregues a nenhum receptor ou mensagens que não puderam ser processadas. Para obter mais informações, confira a Visão geral das filas de mensagens mortas do Barramento de Serviço. Este artigo mostra diferentes maneiras de habilitar as mensagens mortas em filas e assinaturas do Barramento de Serviço.

Usando o Portal do Azure

Ao criar uma fila ou uma assinatura para um tópico no portal do Azure, selecione Habilitar mensagens mortas no término da mensagem, conforme mostrado nos exemplos a seguir.

Criar uma fila com mensagens mortas habilitadas

Enable dead lettering at the time of the queue creation

Criar uma assinatura com mensagens mortas habilitada

Enable dead lettering at the time of the subscription creation

Atualizar a configuração de mensagens mortas no término da mensagem em uma fila existente

Na página Visão geral da fila do Barramento de Serviço, selecione o valor atual de Mensagens mortas na configuração do término da mensagem. No exemplo a seguir, o valor atual é Desabilitado. Você pode habilitar ou desabilitar mensagens mortas no término da mensagem na janela de pop-up.

Enable dead-lettering on message expiration for an existing queue

Atualizar a configuração de mensagens mortas no término da mensagem para uma assinatura existente

Na página Visão geral da assinatura do Barramento de Serviço, selecione o valor atual de Mensagens mortas na configuração do término da mensagem. No exemplo a seguir, o valor atual é Desabilitado. Você pode habilitar ou desabilitar mensagens mortas no término da mensagem na janela de pop-up.

Enable dead-lettering on message expiration for an existing subscription

Usando a CLI do Azure

Para criar uma fila com mensagens mortas habilitadas no término da mensagem, use o comando az servicebus queue create com --enable-dead-lettering-on-message-expiration definido como true.

az servicebus queue create \
    --resource-group myresourcegroup \
    --namespace-name mynamespace \
    --name myqueue \
    --enable-dead-lettering-on-message-expiration true

Para habilitar a configuração de mensagens mortas no término da mensagem em uma fila existente, use o comando az servicebus queue update com --enable-dead-lettering-on-message-expiration definido como true.

az servicebus queue update \
    --resource-group myresourcegroup \
    --namespace-name mynamespace \
    --name myqueue \
    --enable-dead-lettering-on-message-expiration true

Para criar uma assinatura em um tópico com mensagens mortas habilitadas no término da mensagem, use o comando az servicebus topic subscription create com --enable-dead-lettering-on-message-expiration definido como true.

az servicebus topic subscription create \
    --resource-group myresourcegroup \
    --namespace-name mynamespace \
    --topic-name mytopic \
    --name mysubscription \
    --enable-dead-lettering-on-message-expiration true

Para habilitar a configuração de mensagens mortas no término da mensagem para uma assinatura em um tópico, use o comando az servicebus topic subscription update com --enable-dead-lettering-on-message-expiration definido como true.

az servicebus topic subscription update \
    --resource-group myresourcegroup \
    --namespace-name mynamespace \
    --topic-name mytopic \
    --name mysubscription \
    --enable-dead-lettering-on-message-expiration true

Observação

Se você especificar uma fila ou um tópico usando o parâmetro --forward-dead-lettered-messages-to, a Grade de Eventos encaminhará automaticamente as mensagens mortas para a fila ou o tópico. Aqui está um exemplo: az servicebus queue create --resource-group mysbusrg --namespace-name mysbusns --name myqueue --enable-dead-lettering-on-message-expiration true --forward-dead-lettered-messages-to myqueue2.

Usando o PowerShell do Azure

Para criar uma fila com mensagens mortas habilitadas no término da mensagem, use o comando New-AzServiceBusQueue com -DeadLetteringOnMessageExpiration definido como $True.

New-AzServiceBusQueue -ResourceGroup myresourcegroup `
    -NamespaceName mynamespace `
    -QueueName myqueue `
    -DeadLetteringOnMessageExpiration $True

Para habilitar a configuração de mensagens mortas no término da mensagem para uma fila existente, use o comando Set-AzServiceBusQueue conforme mostrado no exemplo a seguir.

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

$queue.DeadLetteringOnMessageExpiration=$True

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

Para criar uma assinatura de um tópico com mensagens mortas habilitadas no término da mensagem, use o comando New-AzServiceBusSubscription com -DeadLetteringOnMessageExpiration definido como $True.

New-AzServiceBusSubscription -ResourceGroup myresourcegroup `
    -NamespaceName mynamespace `
    -TopicName mytopic `
    -SubscriptionName mysubscription `
    -DeadLetteringOnMessageExpiration $True

Para habilitar a configuração de mensagens mortas no término da mensagem em uma assinatura existente, confira o exemplo a seguir.

$subscription=Get-AzServiceBusSubscription -ResourceGroup myresourcegroup `
    -NamespaceName mynamespace `
    -TopicName mytopic `
    -SubscriptionName mysub

$subscription.DeadLetteringOnMessageExpiration=$True

Set-AzServiceBusSubscription -ResourceGroup myresourcegroup `
    -NamespaceName mynamespace `
    -Name mytopic `
    -SubscriptionName mysub `
    -SubscriptionObj $subscription 

Observação

Se você especificar uma fila ou um tópico usando o parâmetro -ForwardDeadLetteredMessagesTo, a Grade de Eventos encaminhará automaticamente as mensagens mortas para a fila ou o tópico.

Usar o modelo do Azure Resource Manager

Para criar uma fila com mensagens mortas habilitadas no término da mensagem, defina deadLetteringOnMessageExpiration na seção de propriedades da fila como true. Para obter mais informações, confira Referência de modelo de namespaces/filas do Microsoft.ServiceBus.

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

Para criar uma assinatura para um tópico com mensagens mortas habilitadas no término da mensagem, defina deadLetteringOnMessageExpiration na seção de propriedades da fila como true. Para obter mais informações, confira Referência de modelo de namespaces/tópicos/assinaturas 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"
      }
    },
    "serviceBusSubscriptionName": {
      "type": "string",
      "metadata": {
        "description": "Name of the Subscription"
      }
    },
    "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": {
            "maxSizeInMegabytes": 1024
          },
          "resources": [
            {
              "apiVersion": "2017-04-01",
              "name": "[parameters('serviceBusSubscriptionName')]",
              "type": "Subscriptions",
              "dependsOn": [
                "[parameters('serviceBusTopicName')]"
              ],
              "properties": {
                "deadLetteringOnMessageExpiration": true
              }
            }
          ]
        }
      ]
    }
  ]
}

Observação

Se você especificar uma fila ou um tópico para a propriedade forwardDeadLetteredMessagesTo, a Grade de Eventos encaminhará automaticamente as mensagens mortas para a fila ou o tópico.

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.