Включение функции недоставленных сообщений по истечении срока действия для подписок и очередей Служебной шины Azure

Очереди служебной шины Azure и подписки на разделы поддерживают дополнительную очередь, которая называется очередью недоставленных сообщений. Очередь недоставленных сообщений не нужно создавать явным образом. Ее нельзя удалить, ею нельзя управлять отдельно от основной сущности. Очередь недоставленных сообщений предназначена для хранения сообщений, которые невозможно доставить ни одному адресату либо не удалось обработать. Дополнительные сведения см. в статье Обзор очередей недоставленных сообщений служебной шины. В этой статье описаны разные способы настройки функции недоставленных сообщений для очередей и подписок Служебной шины.

Используя портал Azure

При создании очереди или подписки на раздел с помощью портала Azure выберите параметр Enable dead lettering on message expiration (Включить функцию недоставленных сообщений по истечении срока действия).

Создание очереди с поддержкой функции недоставленных сообщений

Enable dead lettering at the time of the queue creation

Создание подписки с поддержкой недоставленных сообщений

Enable dead lettering at the time of the subscription creation

Обновление параметра недоставленных сообщений по истечении срока действия для существующей очереди

На странице Обзор для очереди Служебной шины выберите текущее значение параметра Dead lettering (Недоставленные сообщения). В следующем примере он имеет значение Отключено. Во всплывающем окне можно включить или отключить недоставленные сообщения по истечении срока действия.

Enable dead-lettering on message expiration for an existing queue

Обновление параметра недоставленных сообщений по истечении срока действия для существующей подписки

На странице Обзор для подписки Служебной шины выберите текущее значение параметра Dead lettering (Недоставленные сообщения). В следующем примере он имеет значение Отключено. Во всплывающем окне можно включить или отключить недоставленные сообщения по истечении срока действия.

Enable dead-lettering on message expiration for an existing subscription

Использование Azure CLI

Чтобы создать очередь с включенной функцией недоставленных сообщений по истечении срока действия, используйте команду az servicebus queue create со значением true параметра --enable-dead-lettering-on-message-expiration.

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

Чтобы включить функцию недоставленных сообщений по истечении срока действия для существующей очереди, используйте команду az servicebus queue update со значением true параметра --enable-dead-lettering-on-message-expiration.

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

Чтобы создать подписку на раздел с включенной функцией недоставленных сообщений по истечении срока действия, используйте команду az servicebus topic subscription create со значением true параметра --enable-dead-lettering-on-message-expiration.

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

Чтобы включить функцию недоставленных сообщений по истечении срока действия для существующей подписки на раздел, используйте команду az servicebus topic subscription update со значением true параметра --enable-dead-lettering-on-message-expiration.

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

Примечание.

Если указать очередь или раздел с помощью --forward-dead-lettered-messages-to параметра, сетка событий автоматически перенаправит сообщения с недоставленными буквами в эту очередь или раздел. Вот пример: 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.

Использование Azure PowerShell

Чтобы создать очередь с включенной функцией недоставленных сообщений по истечении срока действия, используйте команду New-AzServiceBusQueue со значением $True параметра -DeadLetteringOnMessageExpiration.

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

Чтобы включить функцию недоставленных сообщений по истечении срока действия для существующей очереди, используйте команду Set-AzServiceBusQueue, как показано в примере ниже.

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

$queue.DeadLetteringOnMessageExpiration=$True

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

Чтобы создать подписку на раздел с включенной функцией недоставленных сообщений по истечении срока действия, используйте команду New-AzServiceBusSubscription со значением $True параметра -DeadLetteringOnMessageExpiration.

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

Чтобы включить функцию недоставленных сообщений по истечении срока действия для существующей подписки, см. пример ниже.

$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 

Примечание.

Если указать очередь или раздел с помощью -ForwardDeadLetteredMessagesTo параметра, сетка событий автоматически перенаправит сообщения с недоставленными буквами в эту очередь или раздел.

Использование шаблона Azure Resource Manager

Чтобы создать очередь с включенной функцией недоставленных сообщений по истечении срока действия, задайте для параметра deadLetteringOnMessageExpiration в разделе свойств очереди значение true. Дополнительные сведения см. в справочнике по шаблонам пространств имен/очередей 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
          }
        }
      ]
    }
  ]
}

Чтобы создать подписку на раздел с включенной функцией недоставленных сообщений по истечении срока действия, задайте для параметра deadLetteringOnMessageExpiration в разделе свойств очереди значение true. Дополнительные сведения см. в справочнике по шаблонам пространств имен, разделов и подписок 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
              }
            }
          ]
        }
      ]
    }
  ]
}

Примечание.

Если указать очередь или раздел для forwardDeadLetteredMessagesTo свойства, служба "Сетка событий" автоматически перенаправит сообщения с недоставленными письмами в эту очередь или раздел.

Следующие шаги

Опробуйте примеры на выбранном языке, чтобы изучить возможности Служебной шины Azure.

Примеры для более ранних клиентских библиотек .NET и Java см. ниже.

30 сентября 2026 г. мы удалим библиотеки пакета SDK Служебная шина Azure WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus и com.microsoft.azure.servicebus, которые не соответствуют рекомендациям по пакету SDK Azure. Мы также завершим поддержку протокола SBMP, поэтому вы больше не сможете использовать этот протокол после 30 сентября 2026 года. Перейдите в последние библиотеки пакета SDK Azure, которые предлагают критически важные обновления системы безопасности и улучшенные возможности до этой даты.

Хотя старые библиотеки по-прежнему могут использоваться после 30 сентября 2026 года, они больше не будут получать официальную поддержку и обновления от Майкрософт. Дополнительные сведения см. в объявлении о выходе на пенсию в службу поддержки.