Привязки для устойчивых функций (Функции Azure)
Расширение Устойчивых функций вводит три привязки триггеров, которые управляют выполнением функций оркестратора, сущности и активности. Он также содержит привязку к выходным данным, которая действует как клиент для среды выполнения устойчивых функций.
Выберите язык разработки Устойчивые функции в верхней части статьи.
Внимание
Эта статья поддерживает модели программирования Python версии 1 и Python версии 2 для Устойчивые функции.
Модель программирования Python версии 2
Устойчивые функции поддерживается в новом Модель программирования Python версии 2. Чтобы использовать модель версии 2, необходимо установить пакет SDK Устойчивые функции, который является пакетом azure-functions-durable
PyPI, версией или более поздней версией1.2.2
. Кроме того, необходимо проверкаhost.json
, чтобы убедиться, что приложение ссылается на пакеты расширений версии 4.x, чтобы использовать модель версии 2 с Устойчивые функции.
Вы можете предоставить отзывы и предложения в пакете SDK Устойчивые функции для репозитория Python.
Триггер оркестрации
Триггер оркестрации позволяет создавать устойчивые функции оркестратора. Этот триггер выполняется, когда планируется новый экземпляр оркестровки и когда существующий экземпляр оркестрации получает событие. Примеры событий, которые могут запускать функции оркестратора, включают длительные истечения таймера, ответы функций активности и события, инициированные внешними клиентами.
При создании функций в .NET, триггер оркестрации настраивается с помощью атрибута .NET OrchestrationTriggerAttribute.
Для Java заметка @DurableOrchestrationTrigger
используется для настройки триггера оркестрации.
При записи функций оркестратора триггер оркестрации определяется следующим объектом JSON в массиве bindings
файла function.json :
{
"name": "<Name of input parameter in function signature>",
"orchestration": "<Optional - name of the orchestration>",
"type": "orchestrationTrigger",
"direction": "in"
}
orchestration
— это имя оркестрации, которое клиенты должны использовать, когда требуется запускать новые экземпляры этой функции оркестрации. Это необязательное свойство. Если не указан, используется имя функции.
Функции Azure поддерживает две модели программирования для Python. Способ определения триггера оркестрации зависит от выбранной модели программирования.
Модель программирования Python версии 2 позволяет определить триггер оркестрации с помощью orchestration_trigger
декоратора непосредственно в коде функции Python.
В модели версии 2 доступ к триггерам и привязкам Устойчивые функции осуществляется из экземпляраDFApp
, который является подклассомFunctionApp
, который дополнительно экспортирует декораторы Устойчивые функции.
На внутреннем уровне эта привязка триггера опрашивает настроенное долговременное хранилище на предмет новых событий оркестровки, таких как события начала оркестрации, события истечения долговременного таймера, события ответа функции активности и внешние события, вызванные другими функциями.
Поведение триггера
Ниже приведены сведения о триггере оркестрации:
- Однопоточная обработка. Один поток диспетчера используется для выполнения всех функций оркестратора на одном экземпляре узла. По этой причине необходимо убедиться, что код функции оркестратора эффективен и не выполняет никаких операций ввода-вывода. Также важно убедиться, что этот поток не выполняет никакой асинхронной работы, кроме тех случаев, когда ожидаются типы задач, специфичные для устойчивых функций.
- Обработка подозрительных сообщений — в триггерах оркестрации отсутствует поддержка подозрительных сообщений.
- Видимость сообщений. Сообщения триггеров оркестрации удаляются из очереди и сохраняются невидимыми в течение настраиваемого промежутка времени. Видимость этих сообщений обновляется автоматически, пока приложение-функция выполняется и работоспособно.
- Возвращаемые значения. Возвращаемые значения сериализуются в JSON и сохраняются в таблице с журналом оркестрации в хранилище таблиц Azure. Эти возвращаемые значения может запрашивать привязка клиента оркестрации, описанная ниже.
Предупреждение
Функции оркестратора никогда не должны использовать никаких входных и выходных привязок, отличных от привязки триггера оркестрации. Это может вызвать проблемы с расширением устойчивых функций, так как эти привязки могут не подчиняться правилам однопоточности и ввода-вывода. Если вы хотите использовать другие привязки, добавьте их в функцию действия, вызываемую из функции оркестратора. Дополнительные сведения об ограничениях кодирования для функций оркестратора см. в документации по ограничениям кода функций службы Orchestrator.
Предупреждение
Функции оркестратора никогда не должны объявляться async
.
Использование триггера
Привязка триггера оркестрации поддерживает входные и выходные данные. Ниже приведены некоторые сведения об обработке входных и выходных данных.
- входные данные — триггеры оркестрации могут быть вызваны с входами, доступ к которым осуществляется через объект ввода контекста. Все входные данные должны быть сериализуемыми в формате JSON.
- Выходные данные. Триггеры оркестрации поддерживают выходные значения, а также входные данные. Возвращаемое значение функции используется для назначения выходного значения и должно быть типа, который сериализуется в JSON.
Пример триггера
В коде ниже представлен пример простой функции оркестратора Hello World. Обратите внимание, что в этом примере оркестратор фактически не планирует никаких задач.
Конкретный атрибут, используемый для определения триггера, зависит от того, выполняете ли функции C# в процессе или в изолированном рабочем процессе.
[FunctionName("HelloWorld")]
public static string Run([OrchestrationTrigger] IDurableOrchestrationContext context)
{
string name = context.GetInput<string>();
return $"Hello {name}!";
}
Примечание.
Предыдущий пример предназначен для Устойчивых функций версии 2.x. Для расширения Устойчивые функции 1.x необходимо использовать DurableOrchestrationContext
вместо IDurableOrchestrationContext
. Дополнительные сведения о различиях между версиями см. в статье Версии Устойчивых функций.
const df = require("durable-functions");
module.exports = df.orchestrator(function*(context) {
const name = context.df.getInput();
return `Hello ${name}!`;
});
Примечание.
Библиотека durable-functions
обеспечит вызов синхронного метода context.done
при выходе из функции генератора.
param($Context)
$InputData = $Context.Input
$InputData
@FunctionName("HelloWorldOrchestration")
public String helloWorldOrchestration(
@DurableOrchestrationTrigger(name = "ctx") TaskOrchestrationContext ctx) {
return String.format("Hello %s!", ctx.getInput(String.class));
}
Большинство функций оркестратора вызывают функции действий. Пример "Hello World" демонстрирует, как вызвать функцию действия:
[FunctionName("HelloWorld")]
public static async Task<string> Run(
[OrchestrationTrigger] IDurableOrchestrationContext context)
{
string name = context.GetInput<string>();
string result = await context.CallActivityAsync<string>("SayHello", name);
return result;
}
Примечание.
Предыдущий пример предназначен для Устойчивых функций версии 2.x. Для расширения Устойчивые функции 1.x необходимо использовать DurableOrchestrationContext
вместо IDurableOrchestrationContext
. Дополнительные сведения о различиях между версиями см. в статье Версии устойчивых функций.
const df = require("durable-functions");
module.exports = df.orchestrator(function*(context) {
const name = context.df.getInput();
const result = yield context.df.callActivity("SayHello", name);
return result;
});
@FunctionName("HelloWorld")
public String helloWorldOrchestration(
@DurableOrchestrationTrigger(name = "ctx") TaskOrchestrationContext ctx) {
String input = ctx.getInput(String.class);
String result = ctx.callActivity("SayHello", input, String.class).await();
return result;
}
Триггер действия
Триггер действия позволяет создавать функции, которые вызываются функциями оркестратора. Они называются функциями действия.
Триггер действия настраивается с помощью атрибута ActivityTriggerAttribute .NET.
Триггер действия настраивается с помощью заметки @DurableActivityTrigger
.
Триггер действия определяется следующим объектом JSON в массиве bindings
function.json:
{
"name": "<Name of input parameter in function signature>",
"activity": "<Optional - name of the activity>",
"type": "activityTrigger",
"direction": "in"
}
activity
является именем действия. Это значение — имя, которое функции оркестратора используют для вызова этой функции действия. Это необязательное свойство. Если не указан, используется имя функции.
Способ определения триггера действия зависит от выбранной модели программирования.
На внутреннем уровне эта привязка триггера опрашивает настроенное долговременное хранилище на предмет новых событий выполнения действий.
Поведение триггера
Ниже приведены сведения о триггере действия:
- Работа с потоками. В отличие от триггера оркестрации, триггеры действий не имеют каких-либо ограничений при работе с потоками или операциями ввода-вывода. Они могут рассматриваться как обычные функции.
- Обработка подозрительных сообщений — в триггерах активности отсутствует поддержка подозрительных сообщений.
- Видимость сообщений. Сообщения триггеров действий удаляются из очереди и сохраняются невидимыми в течение настраиваемого промежутка времени. Видимость этих сообщений обновляется автоматически, пока приложение-функция выполняется и работоспособно.
- Возвращаемые значения — возвращаемые значения сериализуются в JSON и сохраняются в настроенном долговременном хранилище.
Использование триггера
Привязка триггера действий поддерживает входные и выходные данные, как и триггер оркестрации. Ниже приведены некоторые сведения об обработке входных и выходных данных.
- входные данные — триггеры действий могут быть вызваны с входными данными из функции оркестратора. Все входные данные должны быть сериализуемыми в формате JSON.
- Выходные данные. Функции действий поддерживают выходные значения, а также входные данные. Возвращаемое значение функции используется для назначения выходного значения и должно быть типа, который сериализуется в JSON.
- метаданные — функции действий .NET могут связываться с параметром
string instanceId
для получения идентификатора экземпляра вызывающей оркестровки.
Пример триггера
В следующем примере кода показано, как выглядит простая SayHello
функция действия.
[FunctionName("SayHello")]
public static string SayHello([ActivityTrigger] IDurableActivityContext helloContext)
{
string name = helloContext.GetInput<string>();
return $"Hello {name}!";
}
Типом параметра по умолчанию для привязки .NET ActivityTriggerAttribute
является IDurableActivityContext (или DurableActivityContext для Устойчивых функций версии 1). Но триггеры действий .NET также поддерживают привязку непосредственно к JSON-сериализуемым типам (включая примитивные типы), поэтому эту же функцию можно упростить следующим образом:
[FunctionName("SayHello")]
public static string SayHello([ActivityTrigger] string name)
{
return $"Hello {name}!";
}
module.exports = async function(context) {
return `Hello ${context.bindings.name}!`;
};
Привязки JavaScript также можно передать в качестве дополнительных параметров, поэтому одну и ту же функцию можно упростить следующим образом:
module.exports = async function(context, name) {
return `Hello ${name}!`;
};
param($name)
"Hello $name!"
@FunctionName("SayHello")
public String sayHello(@DurableActivityTrigger(name = "name") String name) {
return String.format("Hello %s!", name);
}
Использование входных и выходных привязок
В дополнение к привязке триггера действий можно использовать обычные входные и выходные привязки.
Например, можно передать входные данные в привязку действия и отправить сообщение в Концентратор событий с помощью выходной привязки Центров событий:
{
"bindings": [
{
"name": "message",
"type": "activityTrigger",
"direction": "in"
},
{
"type": "eventHub",
"name": "outputEventHubMessage",
"connection": "EventhubConnectionSetting",
"eventHubName": "eh_messages",
"direction": "out"
}
]
}
module.exports = async function (context) {
context.bindings.outputEventHubMessage = context.bindings.message;
};
Клиент оркестрации
Привязка клиента оркестрации дает возможность создавать функции, которые взаимодействуют с функциями оркестратора. Зачастую эти функции называют клиентскими. Например, с экземплярами оркестрации можно взаимодействовать следующим образом:
- Запустите их.
- Запросите их состояние.
- Завершите их.
- Отправляйте им события во время их работы.
- Очистите журнал экземпляра.
Вы можете привязаться к клиенту оркестрации с помощью атрибута DurableClientAttribute (OrchestrationClientAttribute в Устойчивые функции версии 1.x).
Вы можете привязаться к клиенту оркестрации с помощью заметки @DurableClientInput
.
Триггер устойчивого клиента определяется следующим объектом JSON в массиве bindings
function.json:
{
"name": "<Name of input parameter in function signature>",
"taskHub": "<Optional - name of the task hub>",
"connectionName": "<Optional - name of the connection string app setting>",
"type": "orchestrationClient",
"direction": "in"
}
taskHub
используется в ситуациях, когда несколько приложений-функций совместно используют одну и ту же учетную запись хранения, но должны быть изолированы друг от друга. Если значение не задано, по умолчанию используется значение изhost.json
. Оно должно соответствовать значению, которое используется целевыми функциями оркестратора.connectionName
— имя параметра приложения, содержащего строку подключения к учетной записи хранения. Учетная запись хранения, представленная этой строкой подключения, должна быть той же, которая используется целевыми функциями оркестратора. Если она не указана, для приложения-функции используется строка подключения к учетной записи хранения по умолчанию.
Примечание.
В большинстве случаев рекомендуется исключить эти свойства и полагаться на поведение по умолчанию.
Способ определения устойчивого триггера клиента зависит от выбранной модели программирования.
Использование клиента
Обычно привязка к IDurableClient (DurableOrchestrationClient в Устойчивые функции версии 1.x), которая обеспечивает полный доступ ко всем API клиента оркестрации, поддерживаемым Устойчивые функции.
Обычно привязка к классу DurableClientContext
.
Чтобы получить доступ к объекту клиента, необходимо использовать пакет SDK для конкретного языка.
Ниже приведен пример функции, запускаемой очередью, которая запускает оркестровку "HelloWorld".
[FunctionName("QueueStart")]
public static Task Run(
[QueueTrigger("durable-function-trigger")] string input,
[DurableClient] IDurableOrchestrationClient starter)
{
// Orchestration input comes from the queue message content.
return starter.StartNewAsync<string>("HelloWorld", input);
}
Примечание.
Предыдущий пример на C# предназначен для Устойчивых функций версии 2.x. Для расширения "Устойчивые функции" версии 1.x необходимо использовать атрибут OrchestrationClient
, а не DurableClient
. Также следует использовать тип параметра DurableOrchestrationClient
вместо IDurableOrchestrationClient
. Дополнительные сведения о различиях между версиями см. в статье Версии Устойчивых функций.
function.json
{
"bindings": [
{
"name": "input",
"type": "queueTrigger",
"queueName": "durable-function-trigger",
"direction": "in"
},
{
"name": "starter",
"type": "durableClient",
"direction": "in"
}
]
}
index.js
const df = require("durable-functions");
module.exports = async function (context) {
const client = df.getClient(context);
return instanceId = await client.startNew("HelloWorld", undefined, context.bindings.input);
};
run.ps1
param([string] $input, $TriggerMetadata)
$InstanceId = Start-DurableOrchestration -FunctionName $FunctionName -Input $input
import azure.functions as func
import azure.durable_functions as df
myApp = df.DFApp(http_auth_level=func.AuthLevel.ANONYMOUS)
@myApp.route(route="orchestrators/{functionName}")
@myApp.durable_client_input(client_name="client")
async def durable_trigger(req: func.HttpRequest, client):
function_name = req.route_params.get('functionName')
instance_id = await client.start_new(function_name)
response = client.create_check_status_response(req, instance_id)
return response
function.json
{
"bindings": [
{
"name": "input",
"type": "queueTrigger",
"queueName": "durable-function-trigger",
"direction": "in"
},
{
"name": "starter",
"type": "durableClient",
"direction": "in"
}
]
}
run.ps1
param([string]$InputData, $TriggerMetadata)
$InstanceId = Start-DurableOrchestration -FunctionName 'HelloWorld' -Input $InputData
@FunctionName("QueueStart")
public void queueStart(
@QueueTrigger(name = "input", queueName = "durable-function-trigger", connection = "Storage") String input,
@DurableClientInput(name = "durableContext") DurableClientContext durableContext) {
// Orchestration input comes from the queue message content.
durableContext.getClient().scheduleNewOrchestrationInstance("HelloWorld", input);
}
Дополнительные сведения о запуске экземпляров см. в статье Управление экземплярами в устойчивых функциях (Функции Azure).
Триггер сущности
Триггеры сущности позволяют создавать функции сущностей. Этот триггер поддерживает обработку событий для конкретного экземпляра сущности.
Примечание.
Триггеры сущности доступны начиная с расширения "Устойчивые функции" версии 2.x.
На внутреннем уровне эта привязка триггера опрашивает настроенное долговременное хранилище на предмет новых операций сущностей, которые необходимо выполнить.
Триггер сущности настраивается с помощью атрибута EntityTriggerAttribute .NET.
Триггер сущности определяется следующим объектом JSON в массиве bindings
function.json:
{
"name": "<Name of input parameter in function signature>",
"entityName": "<Optional - name of the entity>",
"type": "entityTrigger",
"direction": "in"
}
По умолчанию именем сущности является имя функции.
Примечание.
Триггеры сущностей пока не поддерживаются для Java.
Способ определения триггера сущности зависит от выбранной модели программирования.
Поведение триггера
Ниже приведены сведения о триггере сущности.
- С одним потоком: один поток диспетчера используется для обработки операций с определенной сущностью. Если несколько сообщений отправляются в одну сущность одновременно, операции будут обрабатываться одна за раз.
- Обработка подозрительных сообщений — в триггерах сущностей нет поддержки подозрительных сообщений.
- Видимость сообщений: сообщения триггеров сущности удаляются из очереди и сохраняются невидимыми в течение настраиваемого промежутка времени. Видимость этих сообщений обновляется автоматически, пока приложение-функция выполняется и работоспособно.
- Возвращаемые значения — функции сущностей не поддерживают возвращаемые значения. Существуют определенные API, которые можно использовать для сохранения состояния или передачи значений обратно в оркестрации.
Любые изменения состояния, внесенные в сущность во время ее выполнения, будут автоматически сохраняться после завершения выполнения.
Дополнительную информацию и примеры определения триггеров сущностей и взаимодействия с ними см. в документации Устойчивые сущности.
Клиент сущностей
Привязка клиента сущностей позволяет активировать функции сущностей асинхронно. Эти функции иногда называют клиентскими функциями.
Вы можете привязаться к клиенту сущности с помощью атрибута DurableClientAttribute .NET в функциях библиотеки классов .NET.
Примечание.
Также можно использовать [DurableClientAttribute]
для привязки к клиенту оркестрации.
Клиент сущности определяется следующим объектом JSON в массиве bindings
function.json:
{
"name": "<Name of input parameter in function signature>",
"taskHub": "<Optional - name of the task hub>",
"connectionName": "<Optional - name of the connection string app setting>",
"type": "durableClient",
"direction": "in"
}
taskHub
используется в ситуациях, когда несколько приложений-функций совместно используют одну и ту же учетную запись хранения, но должны быть изолированы друг от друга. Если значение не задано, по умолчанию используется значение изhost.json
. Оно должно соответствовать значению, которое используется целевыми функциями сущности.connectionName
— имя параметра приложения, содержащего строку подключения к учетной записи хранения. Учетная запись хранения, представленная этой строкой подключения, должна быть той же, которая используется целевыми функциями сущности. Если она не указана, для приложения-функции используется строка подключения к учетной записи хранения по умолчанию.
Примечание.
В большинстве случаев рекомендуется исключить необязательные свойства и полагаться на поведение по умолчанию.
Способ определения клиента сущности зависит от выбранной модели программирования.
Примечание.
Клиенты сущностей пока не поддерживаются для Java.
Для получения дополнительной информации и примеров взаимодействия с объектами в качестве клиента см. документацию Устойчивые сущности.
Параметры файла host.json
Параметры конфигурации для устойчивых функций.
Примечание.
Все основные версии Устойчивых функций поддерживаются во всех версиях среды выполнения Функций Azure. При этом схема конфигурации host.json немного отличается в зависимости от версии среды выполнения Функций Azure и используемой версии расширения Устойчивых функций. Следующие примеры предназначены для использования с Функциями Azure 2.0 и 3.0. Если вы используете Функции Azure 1.0, в обоих примерах доступные параметры будут одинаковыми, но раздел durableTask файла host.json должен находиться в корне конфигурации host.json, а не в поле extensions.
{
"extensions": {
"durableTask": {
"hubName": "MyTaskHub",
"storageProvider": {
"connectionStringName": "AzureWebJobsStorage",
"controlQueueBatchSize": 32,
"controlQueueBufferThreshold": 256,
"controlQueueVisibilityTimeout": "00:05:00",
"maxQueuePollingInterval": "00:00:30",
"partitionCount": 4,
"trackingStoreConnectionStringName": "TrackingStorage",
"trackingStoreNamePrefix": "DurableTask",
"useLegacyPartitionManagement": true,
"useTablePartitionManagement": false,
"workItemQueueVisibilityTimeout": "00:05:00",
},
"tracing": {
"traceInputsAndOutputs": false,
"traceReplayEvents": false,
},
"notifications": {
"eventGrid": {
"topicEndpoint": "https://topic_name.westus2-1.eventgrid.azure.net/api/events",
"keySettingName": "EventGridKey",
"publishRetryCount": 3,
"publishRetryInterval": "00:00:30",
"publishEventTypes": [
"Started",
"Completed",
"Failed",
"Terminated"
]
}
},
"maxConcurrentActivityFunctions": 10,
"maxConcurrentOrchestratorFunctions": 10,
"extendedSessionsEnabled": false,
"extendedSessionIdleTimeoutInSeconds": 30,
"useAppLease": true,
"useGracefulShutdown": false,
"maxEntityOperationBatchSize": 50,
"storeInputsInOrchestrationHistory": false
}
}
}
Имена центров задач должны начинаться с буквы и содержать только буквы и цифры. Если оно не указано, имя концентратора задач по умолчанию для приложения-функции — TestHubName. Для получения дополнительной информации см. раздел Центры задач.
Свойство | По умолчанию | Description |
---|---|---|
hubName | TestHubName (DurableFunctionsHub при использовании Устойчивые функции 1.x) | Альтернативные имена центра задач позволяют изолировать несколько приложений устойчивых функций друг от друга, даже если они используют один и тот же интерфейс хранилища. |
controlQueueBatchSize | 32 | Количество сообщений, одновременно извлекаемых из очереди управления. |
controlQueueBufferThreshold | План потребления для Python: 32 План потребления для JavaScript и C#: 128 План "Выделенный" или "Премиум": 256 |
Количество сообщений в очереди управления, которые можно поместить в память одновременно, после чего диспетчер будет ожидать исключения дополнительных сообщений из очереди. |
partitionCount | 4 | Число разделов для очереди управления. Допускается целочисленное значение в диапазоне от 1 до 16. |
controlQueueVisibilityTimeout | 5 мин | Время видимости для сообщений, выведенных из очереди управления. |
workItemQueueVisibilityTimeout | 5 мин | Время видимости для сообщений, выведенных из очереди рабочих элементов. |
maxConcurrentActivityFunctions | План потребления: 10 План "Выделенный" или "Премиум": 10 × количество процессоров на текущем компьютере |
Максимальное число функции действия, которые могут параллельно обрабатываться на одном экземпляре узла. |
maxConcurrentOrchestratorFunctions | План потребления: 5 План "Выделенный" или "Премиум": 10 × количество процессоров на текущем компьютере |
Максимальное количество функций оркестратора, которые могут быть обработаны параллельно в одном экземпляре узла. |
maxQueuePollingInterval | 30 секунд | Максимальный интервал опроса очереди управления и рабочих элементов в формате чч:мм:сс. Высокие значения могут привести к увеличению задержек при обработке сообщений. Низкие значения могут привести к повышению затрат на хранение из-за увеличенного объема транзакций с хранилищем. |
connectionName (2.7.0 и более поздние версии) connectionStringName (2.x) azureStorageConnectionStringName (1.x) |
AzureWebJobsStorage | Имя параметра или коллекции параметров приложения, указывающих, как подключиться к базовым ресурсам службы хранилища Azure. Если указан один параметр приложения, это должна быть строка подключения службы хранения Azure. |
trackingStoreConnectionName (2.7.0 и более поздние версии) trackingStoreConnectionStringName |
Имя параметра или коллекции параметров приложения, указывающих, как подключиться к таблицам "Журнал" и "Экземпляры". Если указан один параметр приложения, это должна быть строка подключения службы хранения Azure. Если значение не указано, используется подключение connectionStringName (Устойчивые функции 2.x) или azureStorageConnectionStringName (Устойчивые функции 1.x). |
|
trackingStoreNamePrefix | Префикс, используемый для таблиц журнала и экземпляров, если задано значение trackingStoreConnectionStringName . Если значение не задано, по умолчанию будет использоваться префикс DurableTask . Если значение trackingStoreConnectionStringName не задано, для таблиц журнала и экземпляров в качестве префикса будет использоваться значение hubName , а любой параметр для trackingStoreNamePrefix будет игнорироваться. |
|
traceInputsAndOutputs | false | Это значение указывает, нужно ли отслеживать входы и выходы вызовов функций. При трассировке событий выполнения функции по умолчанию для вызовов функций фиксируется количество байтов в сериализованных входных и выходных данных. Такое поведение позволяет получить некоторое представление о входах и выходах, не увеличивая размеры журналов и не раскрывая конфиденциальные сведения. Если вы присвоите этому свойству значение true, в журналы выполнения функций будет включаться полное содержимое их входов и выходов. |
traceReplayEvents | false | Значение, указывающее, следует ли записывать повторные события оркестрации в Application Insights. |
eventGridTopicEndpoint | URL-адрес конечной точки пользовательского раздела службы "Сетка событий Azure". Если установлен этот параметр, события уведомления о жизненном цикле оркестрации публикуются в указанную конечную точку. Это свойство поддерживает разрешение параметров приложения. | |
eventGridKeySettingName | Имя параметра приложения, содержащего ключ для аутентификации в пользовательском разделе службы "Сетка событий Azure" в EventGridTopicEndpoint . |
|
eventGridPublishRetryCount | 0 | Число повторных попыток, если публикация в разделе "Сетка событий" завершается сбоем. |
eventGridPublishRetryInterval | 5 мин | Интервал повторных попыток для публикации в разделе "Сетка событий" указывается в формате чч: мм:сс. |
eventGridPublishEventTypes | Список типов событий для публикации в Сетке событий. Если значение не указано, будут опубликованы все типы событий. Допустимые значения: Started , Completed , Failed , Terminated . |
|
useAppLease | true | Если задано значение true , перед обработкой сообщений центра задач приложениям потребуется получить аренду большого двоичного объекта уровня приложения. Дополнительные сведения см. в документации по аварийному восстановлению и географическом распределению. Доступно, начиная с версии 2.3.0. |
useLegacyPartitionManagement | false | Если задано значение false , используется алгоритм управления секциями, который снижает вероятность дублирования выполнения функций при горизонтальном масштабировании. Доступно, начиная с версии 2.3.0. |
useTablePartitionManagement | false | Если задано значение true , используется алгоритм управления секциями, предназначенный для снижения затрат на служба хранилища Azure учетных записей версии 2. Доступно начиная с версии 2.10.0. Эта функция сейчас доступна в предварительной версии и еще не совместима с планом потребления. |
useGracefulShutdown | false | Предварительная версия. Включение корректного завершения работы для снижения вероятности того, что при завершении работы основного приложения произойдет сбой внутрипроцессного выполнения функции. |
maxEntityOperationBatchSize(2.6.1) | План потребления: 50 План "Выделенный" или "Премиум": 5000 |
Максимальное количество операций с сущностями, которые обрабатываются пакетом. Если задано значение 1, пакетная обработка отключена, а каждое сообщение об операции обрабатывается с помощью отдельного вызова функции. |
storeInputsInOrchestrationHistory | false | Если задано значение true , платформа устойчивых задач позволяет сохранять входные данные действий в таблице журнала. Это позволяет отображать входные данные функции действия при запросе журнала оркестрации. |
Многие из этих параметров предназначены для оптимизации производительности. Дополнительные сведения см. в статье о производительности и масштабируемости.