Włączanie utraconych komunikatów po wygaśnięciu komunikatów dla kolejek i subskrypcji usługi Azure Service Bus

Kolejki i subskrypcje usługi Azure Service Bus dla tematów udostępniają dodatkową kolejkę o nazwie kolejka utraconych komunikatów (DLQ). Kolejka utraconych komunikatów nie musi być jawnie utworzona. Ponadto nie można jej usunąć ani zarządzać nią niezależnie od obiektu głównego. Celem kolejki utraconych komunikatów jest wstrzymanie komunikatów, których nie można dostarczyć do żadnego odbiorcy lub komunikatów, których nie można przetworzyć. Aby uzyskać więcej informacji, zobacz Omówienie kolejek utraconych komunikatów usługi Service Bus. W tym artykule przedstawiono różne sposoby włączania utraconych komunikatów dla kolejek i subskrypcji usługi Service Bus.

Przy użyciu witryny Azure Portal

Podczas tworzenia kolejki lub subskrypcji tematu w witrynie Azure Portal wybierz pozycję Włącz utracony zapis po wygaśnięciu komunikatu, jak pokazano w poniższych przykładach.

Tworzenie kolejki z włączoną obsługą utraconych komunikatów

Enable dead lettering at the time of the queue creation

Tworzenie subskrypcji z włączoną obsługą utraconych komunikatów

Enable dead lettering at the time of the subscription creation

Aktualizowanie ustawienia wygaśnięcia komunikatów utraconych dla istniejącej kolejki

Na stronie Przegląd kolejki usługi Service Bus wybierz bieżącą wartość dla ustawienia Wygaśnięcia utraconych komunikatów. W poniższym przykładzie bieżąca wartość to Wyłączone. Możesz włączyć lub wyłączyć utracony zapis po wygaśnięciu wiadomości w oknie podręcznym.

Enable dead-lettering on message expiration for an existing queue

Aktualizowanie ustawienia wygaśnięcia komunikatów utraconych dla istniejącej subskrypcji

Na stronie Przegląd subskrypcji usługi Service Bus wybierz bieżącą wartość ustawienia Nieaktywne wysyłanie komunikatów po wygaśnięciu wiadomości. W poniższym przykładzie bieżąca wartość to Wyłączone. Możesz włączyć lub wyłączyć utracony zapis po wygaśnięciu wiadomości w oknie podręcznym.

Enable dead-lettering on message expiration for an existing subscription

Korzystanie z interfejsu wiersza polecenia platformy Azure

Aby utworzyć kolejkę z włączonym usuwaniem utraconych komunikatów, użyj az servicebus queue create polecenia z ustawioną wartością --enable-dead-lettering-on-message-expirationtrue.

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

Aby włączyć ustawienie wygaśnięcia komunikatów utraconych dla istniejącej kolejki, użyj az servicebus queue update polecenia z ustawioną wartością --enable-dead-lettering-on-message-expirationtrue.

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

Aby utworzyć subskrypcję tematu z obsługą utraconych komunikatów po wygaśnięciu wiadomości, użyj az servicebus topic subscription create polecenia z ustawioną wartością --enable-dead-lettering-on-message-expirationtrue.

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

Aby włączyć ustawienie wygaśnięcia komunikatów utraconych dla subskrypcji tematu, użyj az servicebus topic subscription update polecenia z zestawem --enable-dead-lettering-on-message-expirationtrue.

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

Uwaga

Jeśli określisz kolejkę lub temat przy użyciu parametru --forward-dead-lettered-messages-to , usługa Event Grid automatycznie przekazuje komunikaty z komunikatami utraconymi do tej kolejki lub tematu. Oto przykład: 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.

Korzystanie z programu Azure PowerShell

Aby utworzyć kolejkę z włączonym usuwaniem utraconych komunikatów, użyj New-AzServiceBusQueue polecenia z ustawioną wartością -DeadLetteringOnMessageExpiration$True.

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

Aby włączyć ustawienie wygasania komunikatów dla istniejącej kolejki, użyj Set-AzServiceBusQueue polecenia , jak pokazano w poniższym przykładzie.

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

$queue.DeadLetteringOnMessageExpiration=$True

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

Aby utworzyć subskrypcję tematu z włączonym usuwaniem utraconych komunikatów po wygaśnięciu wiadomości, użyj New-AzServiceBusSubscription polecenia z ustawioną wartością -DeadLetteringOnMessageExpiration$True.

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

Aby włączyć ustawienie wygasania komunikatów dla istniejącej subskrypcji, zobacz poniższy przykład.

$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 

Uwaga

Jeśli określisz kolejkę lub temat przy użyciu parametru -ForwardDeadLetteredMessagesTo , usługa Event Grid automatycznie przekazuje komunikaty z komunikatami utraconymi do tej kolejki lub tematu.

Korzystanie z szablonu usługi Azure Resource Manager

Aby utworzyć kolejkę z włączonym wygasaniem komunikatów utraconych, ustaw deadLetteringOnMessageExpiration wartość w sekcji właściwości kolejki na truewartość . Aby uzyskać więcej informacji, zobacz Dokumentacja szablonu przestrzeni nazw/kolejek 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
          }
        }
      ]
    }
  ]
}

Aby utworzyć subskrypcję tematu z włączonym usuwaniem utraconych komunikatów po wygaśnięciu wiadomości, ustaw deadLetteringOnMessageExpiration w sekcji właściwości kolejki wartość true. Aby uzyskać więcej informacji, zobacz Microsoft.ServiceBus namespaces/topics/subscriptions template reference (Dokumentacja szablonu Microsoft.ServiceBus/topics/subscriptions).

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

Uwaga

Jeśli określisz kolejkę lub temat dla forwardDeadLetteredMessagesTo właściwości, usługa Event Grid automatycznie przekazuje komunikaty z komunikatami utraconymi do tej kolejki lub tematu.

Następne kroki

Wypróbuj przykłady w wybranym języku, aby zapoznać się z funkcjami usługi Azure Service Bus.

Znajdź przykłady dla starszych bibliotek klienckich .NET i Java poniżej:

30 września 2026 r. wycofamy biblioteki zestawu SDK usługi Azure Service Bus WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus i com.microsoft.azure.servicebus, które nie są zgodne z wytycznymi dotyczącymi zestawu Azure SDK. Zakończymy również obsługę protokołu SBMP, więc nie będzie można już używać tego protokołu po 30 września 2026 r. Przeprowadź migrację do najnowszych bibliotek zestawu Azure SDK, które oferują krytyczne aktualizacje zabezpieczeń i ulepszone możliwości przed tą datą.

Mimo że starsze biblioteki mogą być nadal używane poza 30 września 2026 r., nie będą już otrzymywać oficjalnej pomocy technicznej i aktualizacji od firmy Microsoft. Aby uzyskać więcej informacji, zobacz ogłoszenie o wycofaniu pomocy technicznej.