Vazby pro Durable Functions (Azure Functions)

Rozšíření Durable Functions zavádí tři aktivační vazby, které řídí provádění funkcí orchestrátoru, entity a aktivit. Zavádí také výstupní vazbu, která funguje jako klient modulu runtime Durable Functions.

Ujistěte se, že jste v horní části článku zvolili vývojový jazyk Durable Functions.

Důležité

Tento článek podporuje programovací modely Pythonu v1 i Pythonu v2 pro Durable Functions.

Programovací model Pythonu v2

Durable Functions se podporuje v novém programovacím modelu Pythonu v2. Chcete-li použít model v2, musíte nainstalovat Durable Functions SDK, což je balíček azure-functions-durablePyPI , verze 1.2.2 nebo novější verze. Musíte také zkontrolovat host.json , jestli vaše aplikace odkazuje na balíčky rozšíření verze 4.x, aby používala model v2 s Durable Functions.

V úložišti Durable Functions SDK pro Python můžete poskytnout zpětnou vazbu a návrhy.

Aktivační událost orchestrace

Trigger orchestrace umožňuje vytvářet odolné funkce orchestrátoru. Tato aktivační událost se spustí, když je naplánována nová instance orchestrace a když existující instance orchestrace obdrží událost. Mezi příklady událostí, které můžou aktivovat funkce orchestrátoru, patří trvalé vypršení platnosti časovače, odpovědi na funkce aktivity a události vyvolané externími klienty.

Při vytváření funkcí v .NET je trigger orchestrace nakonfigurován pomocí atributu OrchestrationTriggerAttribute .NET.

Pro Javu @DurableOrchestrationTrigger se poznámka používá ke konfiguraci triggeru orchestrace.

Při zápisu funkcí orchestrátoru je aktivační událost orchestrace definována následujícím objektem JSON v bindings poli souboru function.json :

{
    "name": "<Name of input parameter in function signature>",
    "orchestration": "<Optional - name of the orchestration>",
    "type": "orchestrationTrigger",
    "direction": "in"
}
  • orchestration je název orchestrace, kterou musí klienti použít, když chtějí spustit nové instance této funkce orchestrátoru. Tato vlastnost je nepovinná. Pokud není zadán, použije se název funkce.

Azure Functions podporuje dva programovací modely pro Python. Způsob, jakým definujete aktivační událost orchestrace, závisí na zvoleném programovacím modelu.

Programovací model Pythonu v2 umožňuje definovat trigger orchestrace pomocí dekorátoru orchestration_trigger přímo v kódu funkce Pythonu.

V modelu v2 jsou triggery a vazby Durable Functions přístupné z instance DFApp, což je podtřída FunctionApp , která navíc exportuje dekorátory specifické pro Durable Functions.

Tato vazba triggeru interně dotazuje nakonfigurované trvalé úložiště pro nové události orchestrace, jako jsou události zahájení orchestrace, události vypršení platnosti trvalých časovačů, události odezvy funkce aktivity a externí události vyvolané jinými funkcemi.

Chování aktivační události

Tady je několik poznámek k triggeru orchestrace:

  • Jednovláknové – jedno vlákno dispečeru se používá pro všechna spuštění funkce orchestrátoru v jedné instanci hostitele. Z tohoto důvodu je důležité zajistit, aby byl kód funkce orchestrátoru efektivní a neprovádí žádné vstupně-výstupní operace. Je také důležité zajistit, aby toto vlákno neprovádí žádnou asynchronní práci s výjimkou čekání na typy úloh specifických pro Durable Functions.
  • Zpracování jedových zpráv – v aktivačních událostech orchestrace není žádná podpora otrávené zprávy.
  • Viditelnost zpráv – Zprávy triggeru orchestrace jsou vyřazeny z fronty a jsou neviditelné po konfigurovatelnou dobu trvání. Viditelnost těchto zpráv se obnoví automaticky, pokud je aplikace funkcí spuštěná a v pořádku.
  • Návratové hodnoty – Návratové hodnoty se serializují do formátu JSON a uchovávají se v tabulce historie orchestrace ve službě Azure Table Storage. Tyto návratové hodnoty mohou být dotazovány vazbou klienta orchestrace, jak je popsáno později.

Upozorňující

Funkce orchestratoru by nikdy neměly používat žádné vstupní nebo výstupní vazby, než je vazba aktivační události orchestrace. To má potenciál způsobit problémy s rozšířením Durable Task, protože tyto vazby nemusí dodržovat pravidla jednovláknového a V/V. Pokud chcete použít jiné vazby, přidejte je do funkce aktivity volané z funkce orchestrátoru. Další informace o omezeních kódování pro funkce orchestrátoru najdete v dokumentaci k omezením kódu funkce Orchestratoru.

Upozorňující

Funkce orchestrátoru by nikdy neměly být deklarovány async.

Aktivace využití

Vazba triggeru orchestrace podporuje vstupy i výstupy. Tady je několik věcí, které je potřeba vědět o zpracování vstupu a výstupu:

  • vstupy – Aktivační události orchestrace lze vyvolat pomocí vstupů, ke kterým se přistupuje prostřednictvím kontextového vstupního objektu. Všechny vstupy musí být serializovatelné ve formátu JSON.
  • výstupy – Triggery orchestrace podporují výstupní hodnoty i vstupy. Návratová hodnota funkce se používá k přiřazení výstupní hodnoty a musí být serializovatelná ve formátu JSON.

Ukázka triggeru

Následující příklad kódu ukazuje, jak může vypadat nejjednodušší funkce orchestrátoru "Hello World". Všimněte si, že tento ukázkový orchestrátor ve skutečnosti neplánuje žádné úkoly.

Konkrétní atribut použitý k definování triggeru závisí na tom, jestli spouštíte funkce jazyka C# v procesu nebo v izolovaném pracovním procesu.

[FunctionName("HelloWorld")]
public static string Run([OrchestrationTrigger] IDurableOrchestrationContext context)
{
    string name = context.GetInput<string>();
    return $"Hello {name}!";
}

Poznámka:

Předchozí kód je pro Durable Functions 2.x. Pro Durable Functions 1.x je nutné použít DurableOrchestrationContext místo IDurableOrchestrationContext. Další informace o rozdílechmezich

const df = require("durable-functions");

module.exports = df.orchestrator(function*(context) {
    const name = context.df.getInput();
    return `Hello ${name}!`;
});

Poznámka:

Knihovna durable-functions se postará o volání synchronní context.done metody při ukončení funkce generátoru.

import azure.functions as func
import azure.durable_functions as df

myApp = df.DFApp(http_auth_level=func.AuthLevel.ANONYMOUS)

@myApp.orchestration_trigger(context_name="context")
def my_orchestrator(context):
    result = yield context.call_activity("Hello", "Tokyo")
    return result
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));
}

Většina funkcí orchestrátoru volá funkce aktivit, takže tady je příklad "Hello World", který ukazuje, jak volat funkci aktivity:

[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;
}

Poznámka:

Předchozí kód je pro Durable Functions 2.x. Pro Durable Functions 1.x je nutné použít DurableOrchestrationContext místo IDurableOrchestrationContext. Další informace o rozdílech mezi verzemi najdete v článku o verzích Durable Functions.

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;
}

Trigger aktivity

Trigger aktivity umožňuje vytvářet funkce volané funkcemi orchestrátoru, označované jako funkce aktivit.

Aktivační událost aktivity je nakonfigurována pomocí atributu ActivityTriggerAttribute .NET.

Aktivační událost aktivity se konfiguruje pomocí poznámky @DurableActivityTrigger .

Aktivační událost aktivity je definována následujícím objektem JSON v bindings poli function.json:

{
    "name": "<Name of input parameter in function signature>",
    "activity": "<Optional - name of the activity>",
    "type": "activityTrigger",
    "direction": "in"
}
  • activity je název aktivity. Tato hodnota je název, který funkce orchestrátoru používají k vyvolání této funkce aktivity. Tato vlastnost je nepovinná. Pokud není zadán, použije se název funkce.

Způsob, jakým definujete trigger aktivity, závisí na zvoleném programovacím modelu.

Použití dekorátoru activity_trigger přímo v kódu funkce Pythonu

Tato vazba triggeru interně dotazuje nakonfigurované trvalé úložiště pro nové události provádění aktivit.

Chování aktivační události

Tady je několik poznámek k triggeru aktivity:

  • Threading – Na rozdíl od triggeru orchestrace nemají triggery aktivit žádná omezení týkající se podprocesů nebo vstupně-výstupních operací. Mohou být považovány za běžné funkce.
  • Zpracování otrávené zprávy – Triggery aktivit nepodporují žádnou otrávenou zprávu.
  • Viditelnost zpráv – Zprávy triggeru aktivity jsou vyřazeny z fronty a jsou neviditelné po konfigurovatelnou dobu trvání. Viditelnost těchto zpráv se obnoví automaticky, pokud je aplikace funkcí spuštěná a v pořádku.
  • Návratové hodnoty – Návratové hodnoty se serializují do formátu JSON a uchovávají se v nakonfigurovaném trvalém úložišti.

Aktivace využití

Vazba triggeru aktivity podporuje vstupy i výstupy stejně jako trigger orchestrace. Tady je několik věcí, které je potřeba vědět o zpracování vstupu a výstupu:

  • vstupy – Aktivační události aktivity lze vyvolat vstupy z funkce orchestrátoru. Všechny vstupy musí být serializovatelné ve formátu JSON.
  • výstupy – Funkce aktivit podporují výstupní hodnoty i vstupy. Návratová hodnota funkce se používá k přiřazení výstupní hodnoty a musí být serializovatelná ve formátu JSON.
  • metadata – Funkce aktivit .NET můžou svázat s parametrem string instanceId , aby získaly ID instance volající orchestrace.

Ukázka triggeru

Následující ukázkový kód ukazuje, jak může vypadat jednoduchá SayHello funkce aktivity.

[FunctionName("SayHello")]
public static string SayHello([ActivityTrigger] IDurableActivityContext helloContext)
{
    string name = helloContext.GetInput<string>();
    return $"Hello {name}!";
}

Výchozí typ parametru pro vazbu .NET ActivityTriggerAttribute je IDurableActivityContext (nebo DurableActivityContext pro Durable Functions v1). Triggery aktivit .NET ale podporují také vazbu přímo na typy serializovatelné ve formátu JSON (včetně primitivních typů), takže stejnou funkci je možné zjednodušit následujícím způsobem:

[FunctionName("SayHello")]
public static string SayHello([ActivityTrigger] string name)
{
    return $"Hello {name}!";
}
module.exports = async function(context) {
    return `Hello ${context.bindings.name}!`;
};

Vazby JavaScriptu lze také předat jako další parametry, takže stejnou funkci lze zjednodušit následujícím způsobem:

module.exports = async function(context, name) {
    return `Hello ${name}!`;
};
import azure.functions as func
import azure.durable_functions as df

myApp = df.DFApp(http_auth_level=func.AuthLevel.ANONYMOUS)

@myApp.activity_trigger(input_name="myInput")
def my_activity(myInput: str):
    return "Hello " + myInput
param($name)

"Hello $name!"
@FunctionName("SayHello")
public String sayHello(@DurableActivityTrigger(name = "name") String name) {
    return String.format("Hello %s!", name);
}

Použití vstupních a výstupních vazeb

Kromě vazby triggeru aktivity můžete použít i běžné vstupní a výstupní vazby.

Můžete například přijmout vstup do vazby aktivity a odeslat zprávu do centra událostí pomocí výstupní vazby služby Event Hubs:

{
  "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;
};

Klient orchestrace

Vazba klienta orchestrace umožňuje psát funkce, které pracují s funkcemi orchestrátoru. Tyto funkce se často označují jako klientské funkce. Instance orchestrace můžete například provádět následujícími způsoby:

  • Začněte je.
  • Zadejte dotaz na jejich stav.
  • Ukončete je.
  • Posílejte jim události, když jsou spuštěné.
  • Vyprázdnění historie instancí

S klientem orchestrace můžete vytvořit vazbu pomocí atributu DurableClientAttribute (OrchestrationClientAttribute v Durable Functions v1.x).

Pomocí poznámky @DurableClientInput můžete vytvořit vazbu s klientem orchestrace.

Aktivační událost odolného klienta je definována následujícím objektem JSON v bindings poli 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 – Používá se ve scénářích, kdy několik aplikací funkcí sdílí stejný účet úložiště, ale musí být navzájem izolované. Pokud není zadána, použije se výchozí hodnota z host.json . Tato hodnota musí odpovídat hodnotě používané cílovými funkcemi orchestrátoru.
  • connectionName– Název nastavení aplikace, které obsahuje připojovací řetězec účtu úložiště. Účet úložiště reprezentovaný tímto připojovací řetězec musí být stejný, který používá funkce cílového orchestrátoru. Pokud není zadaný, použije se výchozí účet úložiště připojovací řetězec aplikace funkcí.

Poznámka:

Ve většině případů doporučujeme vynechat tyto vlastnosti a spoléhat se na výchozí chování.

Způsob, jakým definujete trvalý trigger klienta, závisí na zvoleném programovacím modelu.

Použití dekorátoru durable_client_input přímo v kódu funkce Pythonu

Využití klienta

Obvykle se svážete s IDurableClient (DurableOrchestrationClient v Durable Functions v1.x), což poskytuje úplný přístup ke všem klientským rozhraním API orchestrace podporovaným Durable Functions.

Obvykle se svážete s DurableClientContext třídou.

Pokud chcete získat přístup k objektu klienta, musíte použít sadu SDK specifickou pro jazyk.

Tady je příklad funkce aktivované frontou, která spouští orchestraci "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);
}

Poznámka:

Předchozí kód jazyka C# je pro Durable Functions 2.x. Pro Durable Functions 1.x, musíte použít OrchestrationClient atribut místo DurableClient atributu a musíte použít DurableOrchestrationClient typ parametru místo IDurableOrchestrationClient. Další informace o rozdílechmezich

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);
}

Další podrobnosti o spouštění instancí najdete ve správě instancí.

Trigger entity

Triggery entit umožňují vytvářet funkce entit. Tento trigger podporuje zpracování událostí pro konkrétní instanci entity.

Poznámka:

Triggery entit jsou dostupné od Durable Functions 2.x.

Tato vazba triggeru interně dotazuje nakonfigurované trvalé úložiště pro nové operace entity, které je potřeba spustit.

Aktivační událost entity je nakonfigurována pomocí atributu EntityTriggerAttribute .NET.

Aktivační událost entity je definována následujícím objektem JSON v bindings poli function.json:

{
    "name": "<Name of input parameter in function signature>",
    "entityName": "<Optional - name of the entity>",
    "type": "entityTrigger",
    "direction": "in"
}

Ve výchozím nastavení je název entity název funkce.

Poznámka:

Triggery entit zatím nejsou pro Javu podporované.

Způsob, jakým definujete trigger entity, závisí na zvoleném programovacím modelu.

Použití dekorátoru entity_trigger přímo v kódu funkce Pythonu

Chování aktivační události

Tady je několik poznámek k triggeru entity:

  • Jednovláknové: Jedno vlákno dispečeru se používá ke zpracování operací pro konkrétní entitu. Pokud se do jedné entity současně odesílá více zpráv, budou operace zpracovány jednorázově.
  • Zpracování otrávené zprávy – Triggery entit nepodporují žádnou otrávenou zprávu.
  • Viditelnost zpráv – Zprávy triggeru entity jsou vyřazeny z fronty a jsou neviditelné po konfigurovatelnou dobu trvání. Viditelnost těchto zpráv se obnoví automaticky, pokud je aplikace funkcí spuštěná a v pořádku.
  • Návratové hodnoty – Funkce entity nepodporují návratové hodnoty. Existují specifická rozhraní API, která lze použít k uložení stavu nebo předání hodnot zpět do orchestrací.

Všechny změny stavu provedené v entitě během provádění se po dokončení provádění automaticky zachovají.

Další informace a příklady týkající se definování a interakce s triggery entit najdete v dokumentaci Durable Entities .

Klient entity

Vazba klienta entity umožňuje asynchronně aktivovat funkce entit. Tyto funkce se někdy označují jako klientské funkce.

S klientem entity můžete vytvořit vazbu pomocí atributu DurableClientAttribute .NET ve funkcích knihovny tříd .NET.

Poznámka:

Lze [DurableClientAttribute] také použít k vytvoření vazby s klientem orchestrace.

Klient entity je definován následujícím objektem JSON v bindings poli 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 – Používá se ve scénářích, kdy několik aplikací funkcí sdílí stejný účet úložiště, ale musí být navzájem izolované. Pokud není zadána, použije se výchozí hodnota z host.json . Tato hodnota musí odpovídat hodnotě používané funkcemi cílové entity.
  • connectionName– Název nastavení aplikace, které obsahuje připojovací řetězec účtu úložiště. Účet úložiště reprezentovaný tímto připojovací řetězec musí být stejný, který používá funkce cílové entity. Pokud není zadaný, použije se výchozí účet úložiště připojovací řetězec aplikace funkcí.

Poznámka:

Ve většině případů doporučujeme vynechat volitelné vlastnosti a spoléhat se na výchozí chování.

Způsob, jakým definujete klienta entity, závisí na zvoleném programovacím modelu.

Použití dekorátoru durable_client_input přímo v kódu funkce Pythonu

Poznámka:

Klienti entit zatím nejsou pro Javu podporovaní.

Další informace a příklady pro interakci s entitami jako klienta najdete v dokumentaci Durable Entities .

nastavení host.json

Nastavení konfigurace pro Durable Functions

Poznámka:

Všechny hlavní verze Durable Functions jsou podporovány ve všech verzích modulu runtime Azure Functions. Schéma konfigurace host.json se ale mírně liší v závislosti na verzi modulu runtime Azure Functions a verzi rozšíření Durable Functions, kterou používáte. Následující příklady se používají se službou Azure Functions 2.0 a 3.0. V obou příkladech platí, že pokud používáte Azure Functions 1.0, jsou dostupná nastavení stejná, ale část DurableTask host.json by měla být v kořenovém adresáři konfigurace host.json, ne jako pole v části Rozšíření.

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

Názvy centra úkolů musí začínat písmenem a obsahovat pouze písmena a číslice. Pokud není zadaný, výchozí název centra úloh pro aplikaci funkcí je TestHubName. Další informace najdete v tématu Centra úloh.

Vlastnost Výchozí Popis
hubName TestHubName (DurableFunctionsHub, pokud používáte Durable Functions 1.x) Názvy alternativních center úloh je možné použít k izolaci více aplikací Durable Functions mezi sebou, i když používají stejný back-end úložiště.
controlQueueBatchSize 32 Počet zpráv, které se mají najednou stáhnout z řídicí fronty
controlQueueBufferThreshold Plán Consumption pro Python: 32
Plán Consumption pro JavaScript a C#: 128
Plán Dedicated/Premium: 256
Počet zpráv řídicí fronty, které lze ukládat do vyrovnávací paměti najednou, kdy dispečer bude čekat před vyřazením dalších zpráv.
partitionCount 4 Počet oddílů pro řídicí frontu. Může to být kladné celé číslo mezi 1 a 16.
controlQueueVisibilityTimeout 5 minut Časový limit viditelnosti zpráv fronty vyřazených z fronty řízení.
workItemQueueVisibilityTimeout 5 minut Časový limit viditelnosti zpráv fronty vyřazených pracovních položek z fronty
maxConcurrentActivityFunctions Plán Consumption: 10
Plán Dedicated/Premium: 10X počet procesorů na aktuálním počítači
Maximální počet funkcí aktivity, které lze současně zpracovat v jedné instanci hostitele.
maxConcurrentOrchestratorFunctions Plán Consumption: 5
Plán Dedicated/Premium: 10X počet procesorů na aktuálním počítači
Maximální počet funkcí orchestrátoru, které lze současně zpracovat v jedné instanci hostitele.
maxQueuePollingInterval 30 sekund Maximální interval dotazování fronty pracovních položek a ovládacích prvků ve formátu hh:mm:ss . Vyšší hodnoty můžou mít za následek vyšší latenci zpracování zpráv. Nižší hodnoty můžou mít za následek vyšší náklady na úložiště kvůli zvýšeným transakcím úložiště.
connectionName (2.7.0 a novější)
connectionStringName (2.x)
azureStorage Připojení ionStringName (1.x)
AzureWebJobsStorage Název nastavení aplikace nebo kolekce nastavení, která určuje, jak se připojit k podkladovým prostředkům Azure Storage. Když je k dispozici nastavení jedné aplikace, mělo by se jednat o připojovací řetězec azure Storage.
trackingStore Připojení ionName (2.7.0 a novější)
trackingStore Připojení ionStringName
Název nastavení aplikace nebo nastavení kolekce, která určuje, jak se připojit k tabulkám Historie a Instance. Když je k dispozici nastavení jedné aplikace, mělo by se jednat o připojovací řetězec azure Storage. Pokud není zadané, connectionStringName použije se připojení (Durable 2.x) nebo azureStorageConnectionStringName (Durable 1.x).
trackingStoreNamePrefix Předpona, která se má použít pro tabulky Historie a Instance, je-li trackingStoreConnectionStringName zadána. Pokud není nastavená, bude DurableTaskvýchozí hodnota předpony . Pokud trackingStoreConnectionStringName není zadáno, budou tabulky Historie a Instance používat hubName hodnotu jako předponu a všechna nastavení budou trackingStoreNamePrefix ignorována.
traceInputsAndOutputs false (nepravda) Hodnota označující, zda se mají trasovat vstupy a výstupy volání funkce. Výchozí chování při trasování událostí provádění funkce je zahrnout počet bajtů do serializovaných vstupů a výstupů pro volání funkce. Toto chování poskytuje minimální informace o tom, jak vypadají vstupy a výstupy, aniž by se protokoly nebo neúmyslně zpřístupňovaly citlivé informace. Nastavení této vlastnosti na hodnotu true způsobí, že výchozí protokolování funkce zapíše celý obsah vstupů a výstupů funkce.
traceReplayEvents false (nepravda) Hodnota označující, jestli se mají události orchestrace zapisovat do aplikace Přehledy.
eventGridTopicEndpoint Adresa URL vlastního koncového bodu tématu služby Azure Event Grid. Při nastavení této vlastnosti se události oznámení životního cyklu orchestrace publikují do tohoto koncového bodu. Tato vlastnost podporuje řešení Nastavení aplikace.
eventGridKeySettingName Název nastavení aplikace obsahující klíč použitý k ověřování pomocí vlastního tématu služby Azure Event Grid na adrese EventGridTopicEndpoint.
eventGridPublishRetryCount 0 Počet opakování, kdy se publikování do tématu Event Gridu nezdaří.
eventGridPublishRetryInterval 5 minut Event Grid publikuje interval opakování ve formátu hh:mm:ss .
eventGridPublishEventTypes Seznam typů událostí, které se mají publikovat do Event Gridu. Pokud není zadáno, budou publikovány všechny typy událostí. Povolené hodnoty zahrnují Started, Completed, Failed, Terminated.
useAppLease true Pokud je nastavená hodnota true, aplikace budou před zpracováním zpráv centra úloh vyžadovat získání zapůjčení objektů blob na úrovni aplikace. Další informace najdete v dokumentaci k zotavení po havárii a geografické distribuci . Dostupné od verze 2.3.0.
useLegacyPartitionManagement false (nepravda) Pokud je nastavená hodnota false, používá algoritmus správy oddílů, který snižuje možnost duplicitního spuštění funkce při horizontálním navýšení kapacity. Dostupné od verze 2.3.0.
useTablePartitionManagement false (nepravda) Pokud je truetato možnost nastavená, používá algoritmus správy oddílů navržený ke snížení nákladů na účty Azure Storage V2. Dostupné od verze 2.10.0. Tato funkce je aktuálně ve verzi Preview a ještě není kompatibilní s plánem Consumption.
UseGracefulShutdown false (nepravda) (Preview) Povolte řádné vypnutí, aby se snížila pravděpodobnost, že hostitelské vypnutí selhává při provádění funkcí v procesu.
maxEntityOperationBatchSize(2.6.1) Plán Consumption: 50
Plán Dedicated/Premium: 5000
Maximální počet operací entit, které se zpracovávají jako dávka. Pokud je nastavená hodnota 1, dávkování je zakázané a každá zpráva operace je zpracována samostatnou vyvoláním funkce.
storeInputsInOrchestrationHistory false (nepravda) Pokud je tato možnost nastavená na true, řekne rozhraní Durable Task Framework, aby uložil vstupy aktivit v tabulce historie. To umožňuje zobrazení vstupů funkcí aktivit při dotazování historie orchestrace.

Mnohé z těchto nastavení slouží k optimalizaci výkonu. Další informace najdete v tématu Výkon a škálování.

Další kroky