Привязки хранилища очередей Azure для службы "Функции Azure"Azure Queue storage bindings for Azure Functions

В этой статье рассматривается работа с привязками хранилища очередей Azure в службе "Функции Azure".This article explains how to work with Azure Queue storage bindings in Azure Functions. Служба "Функции Azure" поддерживает привязки триггера и выходные привязки для очередей.Azure Functions supports trigger and output bindings for queues.

Это справочные сведения для разработчиков функций Azure.This is reference information for Azure Functions developers. Если вы новичок в функциях Azure, начните со следующих ресурсов:If you're new to Azure Functions, start with the following resources:

Пакеты – Функции 1.xPackages - Functions 1.x

Привязки хранилища очередей предоставляются в пакете NuGet Microsoft. Azure. веб-заданий версии 2. x.The Queue storage bindings are provided in the Microsoft.Azure.WebJobs Nuget package, version 2.x. Исходный код для пакета находится в репозитории GitHub azure-webjobs-sdk.Source code for the package is in the azure-webjobs-sdk GitHub repository.

Поддержка этой привязки автоматически предоставляется во всех средах разработки.Support for this binding is automatically provided in all development environments. Не нужно вручную устанавливать пакет или регистрировать расширение.You don't have to manually install the package or register the extension.

Версия пакета SDK для службы хранилища Azure в решении "Функции" 1.xAzure Storage SDK version in Functions 1.x

В решении "Функции" 1.x триггеры и привязки службы хранилища используют версию 7.2.1 пакета SDK для службы хранилища Azure (пакет NuGet WindowsAzure.Storage).In Functions 1.x, the Storage triggers and bindings use version 7.2.1 of the Azure Storage SDK (WindowsAzure.Storage NuGet package). Если указать другую версию пакета SDK для службы хранилища и использовать привязку к типу пакета SDK для службы хранилища в сигнатуре функции, то среда выполнения "Функции" может сообщить, что выполнить привязку к этому типу невозможно.If you reference a different version of the Storage SDK, and you bind to a Storage SDK type in your function signature, the Functions runtime may report that it can't bind to that type. Чтобы избежать этого, убедитесь, в вашем проекте указан пакет WindowsAzure.Storage 7.2.1.The solution is to make sure your project references WindowsAzure.Storage 7.2.1.

Packages — функции 2. x и более поздних версийPackages - Functions 2.x and higher

Привязки хранилища очередей предоставляются в пакете NuGet Microsoft. Azure. веб-заданий. Extensions. Storage , версия 3. x.The Queue storage bindings are provided in the Microsoft.Azure.WebJobs.Extensions.Storage Nuget package, version 3.x. Исходный код для пакета находится в репозитории GitHub azure-webjobs-sdk.Source code for the package is in the azure-webjobs-sdk GitHub repository.

В следующей таблице указано как добавить поддержку для этой привязки в каждой среде разработки.The following table tells how to add support for this binding in each development environment.

Среда разработкиDevelopment environment Добавление поддержкиTo add support
Локальная разработка – библиотека классов C#Local development - C# class library Установка пакетаInstall the package
Локальная разработка — скрипт C#, JavaScript, F#, Java и PythonLocal development - C# script, JavaScript, F#, Java and Python Регистрация расширенияRegister the extension
Разработка на порталеPortal development Установка при добавлении выходной привязкиInstall when adding output binding

Дополнительные сведения об обновлении существующих расширений привязки на портале, не переиздавая проект приложения-функции, см. раздел Обновление расширений.To learn how to update existing binding extensions in the portal without having to republish your function app project, see Update your extensions.

Сервис кодированияEncoding

Функции ожидают строку в кодировке base64.Functions expect a base64 encoded string. Любая корректировка типа кодирования (для подготовки данных в виде строки в кодировке base64) должна быть реализована в вызывающей службе.Any adjustments to the encoding type (in order to prepare data as a base64 encoded string) need to be implemented in the calling service.

ТриггерTrigger

Используйте триггер очереди для запуска функции при получении нового элемента очереди.Use the queue trigger to start a function when a new item is received on a queue. Сообщение очереди предоставляется в качестве входных данных функции.The queue message is provided as input to the function.

В следующем примере показана функция C#, которая выполняет опрос очереди myqueue-items, а затем делает запись в журнал при каждой обработке элемента очереди.The following example shows a C# function that polls the myqueue-items queue and writes a log each time a queue item is processed.

public static class QueueFunctions
{
    [FunctionName("QueueTrigger")]
    public static void QueueTrigger(
        [QueueTrigger("myqueue-items")] string myQueueItem, 
        ILogger log)
    {
        log.LogInformation($"C# function processed: {myQueueItem}");
    }
}

Атрибуты и заметки триггераTrigger - attributes and annotations

В библиотеках классов C# используйте следующие атрибуты для настройки триггера очереди:In C# class libraries, use the following attributes to configure a queue trigger:

  • QueueTriggerAttributeQueueTriggerAttribute

    Конструктор атрибута принимает имя очереди для отслеживания, как показано в следующем примере:The attribute's constructor takes the name of the queue to monitor, as shown in the following example:

    [FunctionName("QueueTrigger")]
    public static void Run(
        [QueueTrigger("myqueue-items")] string myQueueItem, 
        ILogger log)
    {
        ...
    }
    

    Можно задать свойство Connection, чтобы указать параметр приложения, который содержит строку подключения к учетной записи хранения, которая будет использоваться, как показано в следующем примере:You can set the Connection property to specify the app setting that contains the storage account connection string to use, as shown in the following example:

    [FunctionName("QueueTrigger")]
    public static void Run(
        [QueueTrigger("myqueue-items", Connection = "StorageConnectionAppSetting")] string myQueueItem, 
        ILogger log)
    {
        ....
    }
    

    Полный пример см. в разделе Пример C# в триггере.For a complete example, see Trigger - C# example.

  • StorageAccountAttributeStorageAccountAttribute

    Предоставляет еще один способ указать используемую учетную запись хранения.Provides another way to specify the storage account to use. Конструктор принимает имя параметра приложения, содержащего строку подключения к службе хранилища.The constructor takes the name of an app setting that contains a storage connection string. Атрибут может применяться на уровне класса, метода или параметра.The attribute can be applied at the parameter, method, or class level. Ниже показан пример уровня класса и метода.The following example shows class level and method level:

    [StorageAccount("ClassLevelStorageAppSetting")]
    public static class AzureFunctions
    {
        [FunctionName("QueueTrigger")]
        [StorageAccount("FunctionLevelStorageAppSetting")]
        public static void Run( //...
    {
        ...
    }
    

Используемая учетная запись хранения определяется в следующем порядке:The storage account to use is determined in the following order:

  • Свойство QueueTrigger атрибута Connection.The QueueTrigger attribute's Connection property.
  • Атрибут StorageAccount, примененный к тому же параметру, что и QueueTrigger.The StorageAccount attribute applied to the same parameter as the QueueTrigger attribute.
  • Атрибут StorageAccount, примененный к функции.The StorageAccount attribute applied to the function.
  • Атрибут StorageAccount, примененный к классу.The StorageAccount attribute applied to the class.
  • Параметр приложения AzureWebJobsStorage.The "AzureWebJobsStorage" app setting.

Конфигурация триггераTrigger - configuration

В следующей таблице описываются свойства конфигурации привязки, которые задаются в файле function.json и атрибуте QueueTrigger.The following table explains the binding configuration properties that you set in the function.json file and the QueueTrigger attribute.

свойство function.jsonfunction.json property Свойство атрибутаAttribute property DescriptionDescription
typetype Н/Дn/a Нужно задать значение queueTrigger.Must be set to queueTrigger. Это свойство задается автоматически при создании триггера на портале Azure.This property is set automatically when you create the trigger in the Azure portal.
directiondirection Н/Дn/a Только в файле function.json.In the function.json file only. Нужно задать значение in.Must be set to in. Это свойство задается автоматически при создании триггера на портале Azure.This property is set automatically when you create the trigger in the Azure portal.
namename Н/Дn/a Имя переменной, содержащей полезные данные элемента очереди в коде функции.The name of the variable that contains the queue item payload in the function code.
queueNamequeueName QueueNameQueueName Имя очереди для опроса.The name of the queue to poll.
connectionconnection СоединениеConnection Имя параметра приложения, содержащего строку подключения к службе хранилища, используемой для этой привязки.The name of an app setting that contains the Storage connection string to use for this binding. Если имя параметра приложения начинается с AzureWebJobs, можно указать только остальную часть имени.If the app setting name begins with "AzureWebJobs", you can specify only the remainder of the name here. Например, если для connection задано значение "MyStorage", среда выполнения функций ищет параметр приложения с именем "MyStorage".For example, if you set connection to "MyStorage", the Functions runtime looks for an app setting that is named "MyStorage." Если оставить строку connection пустой, среда выполнения службы "Функции" будет использовать строку подключения к службе хранилища по умолчанию для параметра приложения с именем AzureWebJobsStorage.If you leave connection empty, the Functions runtime uses the default Storage connection string in the app setting that is named AzureWebJobsStorage.

При локальной разработке параметры приложения перейдут в файл local.settings.json.When you're developing locally, app settings go into the local.settings.json file.

Использование триггераTrigger - usage

Получите доступ к данным сообщения с помощью параметра метода, например string paramName.Access the message data by using a method parameter such as string paramName. Вы можете выполнить привязку к одному из следующих типов:You can bind to any of the following types:

  • Объект. Среда выполнения службы "Функции" десериализует полезные данные JSON в экземпляр произвольного класса, определенного в коде.Object - The Functions runtime deserializes a JSON payload into an instance of an arbitrary class defined in your code.
  • string
  • byte[]
  • CloudQueueMessageCloudQueueMessage

Если при попытке привязать к CloudQueueMessage вы получаете сообщение об ошибке, убедитесь, что у вас есть ссылка на правильную версию пакета SDK для службы хранилища.If you try to bind to CloudQueueMessage and get an error message, make sure that you have a reference to the correct Storage SDK version.

Метаданные сообщения триггераTrigger - message metadata

Триггер очереди предоставляет несколько свойств метаданных.The queue trigger provides several metadata properties. Эти свойства можно использовать как часть выражений привязки в других привязках или как параметры в коде.These properties can be used as part of binding expressions in other bindings or as parameters in your code. Эти свойства относятся к классу CloudQueueMessage.These are properties of the CloudQueueMessage class.

СвойствоProperty ТипType DescriptionDescription
QueueTrigger string Полезные данные очереди (если это допустимая строка).Queue payload (if a valid string). Если полезная нагрузка сообщения очереди является строкой, QueueTrigger имеет то же значение, что и переменная, именованная свойством name в Function. JSON.If the queue message payload is a string, QueueTrigger has the same value as the variable named by the name property in function.json.
DequeueCount int Количество раз, когда сообщение было выведено из очереди.The number of times this message has been dequeued.
ExpirationTime DateTimeOffset Время истечения срока действия сообщения.The time that the message expires.
Id string Идентификатор сообщения в очереди.Queue message ID.
InsertionTime DateTimeOffset Время, когда сообщение было добавлено в очередь.The time that the message was added to the queue.
NextVisibleTime DateTimeOffset Время, когда сообщение станет видимым в следующий раз.The time that the message will next be visible.
PopReceipt string Уведомление о получении сообщения.The message's pop receipt.

Триггеры сообщений о сбоеTrigger - poison messages

При сбое функции триггера очереди по умолчанию служба "Функции Azure" выполняет ее для заданного сообщения очереди еще пять раз (включая первую попытку).When a queue trigger function fails, Azure Functions retries the function up to five times for a given queue message, including the first try. В случае сбоя всех пяти попыток среда выполнения функций добавляет сообщение в очередь с именем <имя_первоначальной_очереди>-poison.If all five attempts fail, the functions runtime adds a message to a queue named <originalqueuename>-poison. Можно написать функции для обработки сообщений из очереди подозрительных сообщений путем внесения их в журнал или отправки уведомления о необходимости ручного вмешательства.You can write a function to process messages from the poison queue by logging them or sending a notification that manual attention is needed.

Для обработки сообщений о сбоях вручную проверьте значение dequeueCount сообщения очереди.To handle poison messages manually, check the dequeueCount of the queue message.

Триггер алгоритма опросаTrigger - polling algorithm

В триггере очереди реализован алгоритм случайной экспоненциальной отсрочки, который позволяет уменьшить влияние опроса очереди ожидающих задач на затраты на транзакции хранилища.The queue trigger implements a random exponential back-off algorithm to reduce the effect of idle-queue polling on storage transaction costs.

Алгоритм использует следующую логику:The algorithm uses the following logic:

  • При обнаружении сообщения среда выполнения ожидает две секунды, а затем проверяет наличие другого сообщения.When a message is found, the runtime waits two seconds and then checks for another message
  • Если сообщение не найдено, оно ждет около четырех секунд, прежде чем повторять попытку.When no message is found, it waits about four seconds before trying again.
  • После последующих неудачных попыток получения сообщения очереди время ожидания продолжает увеличиваться, пока не достигнет максимального времени ожидания, по умолчанию — одна минута.After subsequent failed attempts to get a queue message, the wait time continues to increase until it reaches the maximum wait time, which defaults to one minute.
  • Максимальное время ожидания настраивается при помощи свойства maxPollingInterval в файле host.json.The maximum wait time is configurable via the maxPollingInterval property in the host.json file.

Для локальной разработки максимальный интервал опроса по умолчанию равен двум секундам.For local development the maximum polling interval defaults to two seconds.

В отношении выставления счетов время, затраченное на опрос среды выполнения, является бесплатным и не учитывается в вашей учетной записи.In regard to billing, time spent polling by the runtime is "free" and not counted against your account.

Триггер параллелизмаTrigger - concurrency

При наличии нескольких сообщений, ожидающих в очереди, триггер очереди извлекает пакет сообщений и в параллельном режиме вызывает экземпляры функций для обработки.When there are multiple queue messages waiting, the queue trigger retrieves a batch of messages and invokes function instances concurrently to process them. По умолчанию в пакете содержится 16 сообщений.By default, the batch size is 16. Когда число обрабатываемых сообщений снижается до 8, среда выполнения получает следующий пакет и начинает обработку содержащихся в нем сообщений.When the number being processed gets down to 8, the runtime gets another batch and starts processing those messages. Поэтому максимальное количество сообщений, одновременно обрабатываемых каждой функцией на одной виртуальной машине, равно 24.So the maximum number of concurrent messages being processed per function on one virtual machine (VM) is 24. Это ограничение применяется отдельно к каждой функции, активируемой с помощью очереди, на каждой виртуальной машине.This limit applies separately to each queue-triggered function on each VM. Если приложение-функция масштабируется на несколько виртуальных машин, каждая машина будет ожидать триггеров и пытаться выполнить функции.If your function app scales out to multiple VMs, each VM will wait for triggers and attempt to run functions. Например, если приложение-функция масштабируется на 3 виртуальные машины, то максимальное количество параллельных экземпляров одной функции, активируемой с помощью очереди, равно 72.For example, if a function app scales out to 3 VMs, the default maximum number of concurrent instances of one queue-triggered function is 72.

Размер пакета и порог для получения нового пакета настраиваются в файле host.json.The batch size and the threshold for getting a new batch are configurable in the host.json file. Если в приложении-функции требуется свести к минимуму параллельное выполнение функций, активируемых с помощью очереди, вы можете задать для размера пакета значение 1.If you want to minimize parallel execution for queue-triggered functions in a function app, you can set the batch size to 1. Этот параметр позволяет исключить параллелизм только при условии, что приложение-функция выполняется на одной виртуальной машине.This setting eliminates concurrency only so long as your function app runs on a single virtual machine (VM).

Триггер очереди автоматически предотвращает многократную обработку функцией сообщения из очереди. Не обязательно создавать идемпотентные функции.The queue trigger automatically prevents a function from processing a queue message multiple times; functions do not have to be written to be idempotent.

Свойства host.json в триггереTrigger - host.json properties

В файле host.json содержатся параметры, управляющие поведением очереди триггера.The host.json file contains settings that control queue trigger behavior. Дополнительные сведения о доступных параметрах см. в разделе Параметры Host. JSON .See the host.json settings section for details regarding available settings.

Выходные данныеOutput

Используйте выходную привязку хранилища очередей Azure, чтобы записать сообщения в очередь.Use the Azure Queue storage output binding to write messages to a queue.

В следующем примере показана функция C#, которая создает сообщения очереди для каждого полученного HTTP-запроса.The following example shows a C# function that creates a queue message for each HTTP request received.

[StorageAccount("MyStorageConnectionAppSetting")]
public static class QueueFunctions
{
    [FunctionName("QueueOutput")]
    [return: Queue("myqueue-items")]
    public static string QueueOutput([HttpTrigger] dynamic input,  ILogger log)
    {
        log.LogInformation($"C# function processed: {input.Text}");
        return input.Text;
    }
}

Выходные атрибуты и заметкиOutput - attributes and annotations

В библиотеках классов C# используйте QueueAttribute.In C# class libraries, use the QueueAttribute.

Этот атрибут применяется к параметру out или возвращаемому значению функции.The attribute applies to an out parameter or the return value of the function. Конструктор атрибута принимает имя очереди, как показано в следующем примере:The attribute's constructor takes the name of the queue, as shown in the following example:

[FunctionName("QueueOutput")]
[return: Queue("myqueue-items")]
public static string Run([HttpTrigger] dynamic input,  ILogger log)
{
    ...
}

Чтобы указать учетную запись хранения, которую нужно использовать, можно задать свойство Connection, как показано в следующем примере.You can set the Connection property to specify the storage account to use, as shown in the following example:

[FunctionName("QueueOutput")]
[return: Queue("myqueue-items", Connection = "StorageConnectionAppSetting")]
public static string Run([HttpTrigger] dynamic input,  ILogger log)
{
    ...
}

Полный пример см. в разделе Пример выходных данных C#.For a complete example, see Output - C# example.

Чтобы указать учетную запись хранения на уровне класса, метода или параметра, можно использовать атрибут StorageAccount.You can use the StorageAccount attribute to specify the storage account at class, method, or parameter level. Дополнительные сведения см. в разделе "Атрибуты триггера".For more information, see Trigger - attributes.

Выходная конфигурацияOutput - configuration

В следующей таблице описываются свойства конфигурации привязки, которые задаются в файле function.json и атрибуте Queue.The following table explains the binding configuration properties that you set in the function.json file and the Queue attribute.

свойство function.jsonfunction.json property Свойство атрибутаAttribute property DescriptionDescription
typetype Н/Дn/a Нужно задать значение queue.Must be set to queue. Это свойство задается автоматически при создании триггера на портале Azure.This property is set automatically when you create the trigger in the Azure portal.
directiondirection Н/Дn/a Нужно задать значение out.Must be set to out. Это свойство задается автоматически при создании триггера на портале Azure.This property is set automatically when you create the trigger in the Azure portal.
namename Н/Дn/a Имя переменной, представляющей очередь в коде функции.The name of the variable that represents the queue in function code. Задайте значение $return, ссылающееся на возвращаемое значение функции.Set to $return to reference the function return value.
queueNamequeueName QueueNameQueueName Имя очереди.The name of the queue.
connectionconnection СоединениеConnection Имя параметра приложения, содержащего строку подключения к службе хранилища, используемой для этой привязки.The name of an app setting that contains the Storage connection string to use for this binding. Если имя параметра приложения начинается с AzureWebJobs, можно указать только остальную часть имени.If the app setting name begins with "AzureWebJobs", you can specify only the remainder of the name here. Например, если для connection задано значение "MyStorage", среда выполнения функций ищет параметр приложения с именем "MyStorage".For example, if you set connection to "MyStorage", the Functions runtime looks for an app setting that is named "MyStorage." Если оставить строку connection пустой, среда выполнения службы "Функции" будет использовать строку подключения к службе хранилища по умолчанию для параметра приложения с именем AzureWebJobsStorage.If you leave connection empty, the Functions runtime uses the default Storage connection string in the app setting that is named AzureWebJobsStorage.

При локальной разработке параметры приложения перейдут в файл local.settings.json.When you're developing locally, app settings go into the local.settings.json file.

Использование выходной привязкиOutput - usage

Напишите одно сообщение очереди с помощью параметра метода, например out T paramName.Write a single queue message by using a method parameter such as out T paramName. Вы можете использовать этот метод типа возвращаемого значения вместо параметра out. T может быть любого из следующих типов:You can use the method return type instead of an out parameter, and T can be any of the following types:

Если при попытке привязать к CloudQueueMessage вы получаете сообщение об ошибке, убедитесь, что у вас есть ссылка на правильную версию пакета SDK для службы хранилища.If you try to bind to CloudQueueMessage and get an error message, make sure that you have a reference to the correct Storage SDK version.

В коде и скрипте C# запишите несколько сообщений очереди с помощью одного из следующих типов:In C# and C# script, write multiple queue messages by using one of the following types:

  • ICollector<T> либо IAsyncCollector<T>ICollector<T> or IAsyncCollector<T>
  • CloudQueue.CloudQueue

Исключения и коды возвратаExceptions and return codes

ПривязкаBinding Справочные материалыReference
ОчередиQueue Коды ошибок очередейQueue Error Codes
Большой двоичный объект, таблица, очередьBlob, Table, Queue Коды ошибок хранилищаStorage Error Codes
Большой двоичный объект, таблица, очередьBlob, Table, Queue Устранение неполадокTroubleshooting

Параметры файла host.jsonhost.json settings

В этом разделе описаны глобальные параметры конфигурации, доступные для этой привязки в версиях 2. x и более поздних.This section describes the global configuration settings available for this binding in versions 2.x and higher. Пример файла host. JSON ниже содержит только параметры версии 2. x + для этой привязки.The example host.json file below contains only the version 2.x+ settings for this binding. Дополнительные сведения о глобальных параметрах конфигурации в версиях 2. x и более поздних версий см. в справочнике по Host. JSON для функций Azure.For more information about global configuration settings in versions 2.x and beyond, see host.json reference for Azure Functions.

Примечание

Чтобы получить дополнительные сведения о файле host.json в Функции 1.x, см. статью host.json reference for Azure Functions 1.x(Справочник по файлу host.json для службы "Функции Azure" версии 1.x.).For a reference of host.json in Functions 1.x, see host.json reference for Azure Functions 1.x.

{
    "version": "2.0",
    "extensions": {
        "queues": {
            "maxPollingInterval": "00:00:02",
            "visibilityTimeout" : "00:00:30",
            "batchSize": 16,
            "maxDequeueCount": 5,
            "newBatchThreshold": 8
        }
    }
}
СвойствоProperty По умолчаниюDefault DescriptionDescription
maxPollingIntervalmaxPollingInterval 00:00:0100:00:01 Максимальный интервал между опросами очереди.The maximum interval between queue polls. Минимальное значение — 00:00:00.100 (100 мс) и увеличивается до 00:01:00 (1 мин.).Minimum is 00:00:00.100 (100 ms) and increments up to 00:01:00 (1 min). В 1. x тип данных равен миллисекундам, а в 2. x и более поздней — интервал времени.In 1.x the data type is milliseconds, and in 2.x and higher it is a TimeSpan.
visibilityTimeoutvisibilityTimeout 00:00:0000:00:00 Интервал времени между повторными попытками, когда при обработке сообщения возникает сбой.The time interval between retries when processing of a message fails.
batchSizebatchSize 1616 Количество сообщений очереди, которые среда выполнения функций одновременно получает и обрабатывает в параллельном режиме.The number of queue messages that the Functions runtime retrieves simultaneously and processes in parallel. Когда число обрабатываемых сообщений достигает newBatchThreshold, среда выполнения получает следующий пакет и начинает обработку содержащихся в нем сообщений.When the number being processed gets down to the newBatchThreshold, the runtime gets another batch and starts processing those messages. Поэтому максимальное количество сообщений, одновременно обрабатываемых каждой функцией, равно batchSize плюс newBatchThreshold.So the maximum number of concurrent messages being processed per function is batchSize plus newBatchThreshold. Это ограничение применяется отдельно к каждой функции, активируемой с помощью очереди.This limit applies separately to each queue-triggered function.

Если вы не хотите, чтобы сообщения из одной очереди обрабатывались параллельно, можно установить для batchSize значение 1.If you want to avoid parallel execution for messages received on one queue, you can set batchSize to 1. Тем не менее этот параметр позволяет исключить параллелизм только при условии, что приложение-функция выполняется на одной виртуальной машине.However, this setting eliminates concurrency only so long as your function app runs on a single virtual machine (VM). Если приложение-функция развернуто на нескольких виртуальных машинах, каждая машина может запускать один экземпляр каждой функции, активируемой с помощью очереди.If the function app scales out to multiple VMs, each VM could run one instance of each queue-triggered function.

Максимальное значение batchSize — 32.The maximum batchSize is 32.
maxDequeueCountmaxDequeueCount 55 Число повторных попыток обработки сообщения, прежде чем поместить его в очередь подозрительных сообщений.The number of times to try processing a message before moving it to the poison queue.
newBatchThresholdnewBatchThreshold batchSize/2batchSize/2 Каждый раз, когда количество сообщений, обрабатываемых параллельно, достигает этого числа, среда выполнения получает другой пакет.Whenever the number of messages being processed concurrently gets down to this number, the runtime retrieves another batch.

Дальнейшие действияNext steps