Bindningar för Durable Functions (Azure Functions)
Tillägget Durable Functions introducerar tre utlösarbindningar som styr körningen av orkestrerings-, entitets- och aktivitetsfunktioner. Den introducerar också en utdatabindning som fungerar som en klient för Durable Functions-körningen.
Se till att välja ditt Durable Functions-utvecklingsspråk överst i artikeln.
Viktigt!
Den här artikeln stöder programmeringsmodellerna Python v1 och Python v2 för Durable Functions.
Python v2-programmeringsmodell
Durable Functions stöds i den nya python v2-programmeringsmodellen. Om du vill använda v2-modellen måste du installera Durable Functions SDK, som är PyPI-paketet azure-functions-durable
, versionen 1.2.2
eller en senare version. Du måste också kontrollera host.json
att appen refererar till tilläggspaket version 4.x för att använda v2-modellen med Durable Functions.
Du kan ge feedback och förslag i Durable Functions SDK för Python-lagringsplatsen.
Orkestreringsutlösare
Med orkestreringsutlösaren kan du skapa varaktiga orkestreringsfunktioner. Den här utlösaren körs när en ny orkestreringsinstans schemaläggs och när en befintlig orkestreringsinstans tar emot en händelse. Exempel på händelser som kan utlösa orkestreringsfunktioner är varaktiga timerförfallodatum, aktivitetsfunktionssvar och händelser som genereras av externa klienter.
När du skapar funktioner i .NET konfigureras orkestreringsutlösaren med attributet OrchestrationTriggerAttribute .NET.
För Java används anteckningen @DurableOrchestrationTrigger
för att konfigurera orkestreringsutlösaren.
När du skriver orkestreringsfunktioner definieras orkestreringsutlösaren av följande JSON-objekt i matrisen bindings
för function.json-filen:
{
"name": "<Name of input parameter in function signature>",
"orchestration": "<Optional - name of the orchestration>",
"type": "orchestrationTrigger",
"direction": "in"
}
orchestration
är namnet på orkestreringen som klienter måste använda när de vill starta nya instanser av den här orchestrator-funktionen. Den här egenskapen är valfri. Om det inte anges används namnet på funktionen.
Azure Functions stöder två programmeringsmodeller för Python. Hur du definierar en orkestreringsutlösare beror på din valda programmeringsmodell.
Med programmeringsmodellen Python v2 kan du definiera en orkestreringsutlösare med hjälp av dekoratören orchestration_trigger
direkt i python-funktionskoden.
I v2-modellen används Durable Functions-utlösare och bindningar från en instans av DFApp
, vilket är en underklass av FunctionApp
som dessutom exporterar Durable Functions-specifika dekoratörer.
Internt avsöker den här utlösarbindningen det konfigurerade varaktiga arkivet för nya orkestreringshändelser, till exempel orkestreringsstarthändelser, varaktiga timer-förfallohändelser, aktivitetsfunktionssvarshändelser och externa händelser som genereras av andra funktioner.
Beteende för utlösare
Här följer några kommentarer om orkestreringsutlösaren:
- Enkeltrådning – En enda dispatcher-tråd används för all orchestrator-funktionskörning på en enda värdinstans. Därför är det viktigt att se till att orchestrator-funktionskoden är effektiv och inte utför någon I/O. Det är också viktigt att se till att den här tråden inte utför något asynkront arbete förutom när du väntar på Durable Functions-specifika aktivitetstyper.
- Hantering av giftmeddelanden – Det finns inget stöd för giftmeddelanden i orkestreringsutlösare.
- Meddelandesynlighet – Orkestreringsutlösare tas bort och hålls osynliga under en konfigurerbar varaktighet. Synligheten för dessa meddelanden förnyas automatiskt så länge funktionsappen körs och är felfri.
- Returvärden – Returvärden serialiseras till JSON och sparas i orkestreringshistoriktabellen i Azure Table Storage. Dessa returvärden kan efterfrågas av orkestreringsklientbindningen, som beskrivs senare.
Varning
Orchestrator-funktioner bör aldrig använda några andra indata- eller utdatabindningar än orkestreringsutlösarbindningen. Detta kan orsaka problem med tillägget Durable Task eftersom dessa bindningar kanske inte följer reglerna för enkeltrådning och I/O. Om du vill använda andra bindningar lägger du till dem i en aktivitetsfunktion som anropas från orkestreringsfunktionen. Mer information om kodningsbegränsningar för orkestreringsfunktioner finns i dokumentationen om begränsningar för Orchestrator-funktionskod .
Varning
Orchestrator-funktioner bör aldrig deklareras async
.
Utlösaranvändning
Orkestreringsutlösarbindningen stöder både indata och utdata. Här följer några saker att veta om hantering av indata och utdata:
- inputs – Orkestreringsutlösare kan anropas med indata som nås via kontextindataobjektet. Alla indata måste vara JSON-serialiserbara.
- outputs – Orkestreringsutlösare stöder både utdatavärden och indata. Returvärdet för funktionen används för att tilldela utdatavärdet och måste vara JSON-serializable.
Utlösarexempel
Följande exempelkod visar hur den enklaste orkestreringsfunktionen "Hello World" kan se ut. Observera att den här exempelorkestreraren faktiskt inte schemalägger några uppgifter.
Det specifika attribut som används för att definiera utlösaren beror på om du kör C#-funktionerna i processen eller i en isolerad arbetsprocess.
[FunctionName("HelloWorld")]
public static string Run([OrchestrationTrigger] IDurableOrchestrationContext context)
{
string name = context.GetInput<string>();
return $"Hello {name}!";
}
Kommentar
Föregående kod är för Durable Functions 2.x. För Durable Functions 1.x måste du använda DurableOrchestrationContext
i stället för IDurableOrchestrationContext
. Mer information om skillnaderna mellan versioner finns i artikeln Durable Functions-versioner .
const df = require("durable-functions");
module.exports = df.orchestrator(function*(context) {
const name = context.df.getInput();
return `Hello ${name}!`;
});
Kommentar
Biblioteket durable-functions
tar hand om att anropa synkron context.done
metod när generatorfunktionen avslutas.
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));
}
De flesta orkestreringsfunktioner anropar aktivitetsfunktioner, så här är ett "Hello World"-exempel som visar hur du anropar en aktivitetsfunktion:
[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;
}
Kommentar
Föregående kod är för Durable Functions 2.x. För Durable Functions 1.x måste du använda DurableOrchestrationContext
i stället för IDurableOrchestrationContext
. Mer information om skillnaderna mellan versioner finns i artikeln Durable Functions-versioner .
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;
}
Aktivitetsutlösare
Med aktivitetsutlösaren kan du skapa funktioner som anropas av orkestreringsfunktioner, så kallade aktivitetsfunktioner.
Aktivitetsutlösaren konfigureras med attributet ActivityTriggerAttribute .NET.
Aktivitetsutlösaren konfigureras med anteckningen @DurableActivityTrigger
.
Aktivitetsutlösaren definieras av följande JSON-objekt i matrisen för bindings
function.json:
{
"name": "<Name of input parameter in function signature>",
"activity": "<Optional - name of the activity>",
"type": "activityTrigger",
"direction": "in"
}
activity
är namnet på aktiviteten. Det här värdet är det namn som orchestrator-funktioner använder för att anropa den här aktivitetsfunktionen. Den här egenskapen är valfri. Om det inte anges används namnet på funktionen.
Hur du definierar en aktivitetsutlösare beror på din valda programmeringsmodell.
Internt avsöker den här utlösarbindningen det konfigurerade varaktiga arkivet för nya aktivitetskörningshändelser.
Beteende för utlösare
Här följer några kommentarer om aktivitetsutlösaren:
- Trådning – Till skillnad från orkestreringsutlösaren har aktivitetsutlösare inga begränsningar kring trådning eller I/O. De kan behandlas som vanliga funktioner.
- Hantering av giftmeddelanden – Det finns inget stöd för giftmeddelanden i aktivitetsutlösare.
- Meddelandesynlighet – Aktivitetsutlösare tas bort och hålls osynliga under en konfigurerbar varaktighet. Synligheten för dessa meddelanden förnyas automatiskt så länge funktionsappen körs och är felfri.
- Returvärden – Returvärden serialiseras till JSON och sparas i det konfigurerade varaktiga arkivet.
Utlösaranvändning
Aktivitetsutlösarbindningen stöder både indata och utdata, precis som orkestreringsutlösaren. Här följer några saker att veta om hantering av indata och utdata:
- inputs – Aktivitetsutlösare kan anropas med indata från en orchestrator-funktion. Alla indata måste vara JSON-serialiserbara.
- outputs – Aktivitetsfunktioner stöder både utdatavärden och indata. Returvärdet för funktionen används för att tilldela utdatavärdet och måste vara JSON-serializable.
- metadata – .NET-aktivitetsfunktioner kan binda till en
string instanceId
parameter för att hämta instans-ID:t för den anropande orkestreringen.
Utlösarexempel
Följande exempelkod visar hur en enkel SayHello
aktivitetsfunktion kan se ut.
[FunctionName("SayHello")]
public static string SayHello([ActivityTrigger] IDurableActivityContext helloContext)
{
string name = helloContext.GetInput<string>();
return $"Hello {name}!";
}
Standardparametertypen för .NET-bindningen ActivityTriggerAttribute
är IDurableActivityContext (eller DurableActivityContext för Durable Functions v1). .NET-aktivitetsutlösare stöder dock även bindning direkt till JSON-serialiserande typer (inklusive primitiva typer), så att samma funktion kan förenklas på följande sätt:
[FunctionName("SayHello")]
public static string SayHello([ActivityTrigger] string name)
{
return $"Hello {name}!";
}
module.exports = async function(context) {
return `Hello ${context.bindings.name}!`;
};
JavaScript-bindningar kan också skickas in som ytterligare parametrar, så samma funktion kan förenklas på följande sätt:
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);
}
Använda indata- och utdatabindningar
Du kan använda vanliga indata- och utdatabindningar utöver aktivitetsutlösarbindningen.
Du kan till exempel ta indata till din aktivitetsbindning och skicka ett meddelande till en händelsehubb med hjälp av Event Hubs-utdatabindningen:
{
"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;
};
Orkestreringsklient
Med orchestration-klientbindningen kan du skriva funktioner som interagerar med orkestreringsfunktioner. Dessa funktioner kallas ofta för klientfunktioner. Du kan till exempel agera på orkestreringsinstanser på följande sätt:
- Starta dem.
- Fråga efter deras status.
- Avsluta dem.
- Skicka händelser till dem medan de körs.
- Rensa instanshistorik.
Du kan binda till orkestreringsklienten med attributet DurableClientAttribute (OrchestrationClientAttribute i Durable Functions v1.x).
Du kan binda till orkestreringsklienten med hjälp av anteckningen @DurableClientInput
.
Den varaktiga klientutlösaren definieras av följande JSON-objekt i matrisen bindings
för 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
– Används i scenarier där flera funktionsappar delar samma lagringskonto men måste isoleras från varandra. Om det inte anges används standardvärdet frånhost.json
. Det här värdet måste matcha det värde som används av målorkestreringsfunktionerna.connectionName
– Namnet på en appinställning som innehåller ett lagringskonto anslutningssträng. Lagringskontot som representeras av den här anslutningssträng måste vara samma som används av målorkestreringsfunktionerna. Om det inte anges används standardlagringskontot anslutningssträng för funktionsappen.
Kommentar
I de flesta fall rekommenderar vi att du utelämnar dessa egenskaper och förlitar dig på standardbeteendet.
Hur du definierar en varaktig klientutlösare beror på din valda programmeringsmodell.
Klientanvändning
Du binder vanligtvis till IDurableClient (DurableOrchestrationClient i Durable Functions v1.x), vilket ger dig fullständig åtkomst till alla orkestreringsklient-API:er som stöds av Durable Functions.
Du binder vanligtvis till DurableClientContext
klassen.
Du måste använda det språkspecifika SDK:et för att få åtkomst till ett klientobjekt.
Här är ett exempel på en köutlöst funktion som startar en "HelloWorld"-orkestrering.
[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);
}
Kommentar
Den tidigare C#-koden är för Durable Functions 2.x. För Durable Functions 1.x måste du använda OrchestrationClient
attributet i stället för DurableClient
attributet och du måste använda DurableOrchestrationClient
parametertypen i stället för IDurableOrchestrationClient
. Mer information om skillnaderna mellan versioner finns i artikeln Durable Functions-versioner .
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);
}
Mer information om startinstanser finns i Instanshantering.
Entitetsutlösare
Med entitetsutlösare kan du skapa entitetsfunktioner. Den här utlösaren stöder bearbetning av händelser för en specifik entitetsinstans.
Kommentar
Entitetsutlösare är tillgängliga från och med Durable Functions 2.x.
Internt avsöker den här utlösarbindningen det konfigurerade varaktiga arkivet för nya entitetsåtgärder som måste köras.
Entitetsutlösaren konfigureras med attributet EntityTriggerAttribute .NET.
Entitetsutlösaren definieras av följande JSON-objekt i matrisen bindings
för function.json:
{
"name": "<Name of input parameter in function signature>",
"entityName": "<Optional - name of the entity>",
"type": "entityTrigger",
"direction": "in"
}
Som standard är namnet på en entitet namnet på funktionen.
Kommentar
Entitetsutlösare stöds ännu inte för Java.
Hur du definierar en entitetsutlösare beror på din valda programmeringsmodell.
Beteende för utlösare
Här följer några kommentarer om entitetsutlösaren:
- Enkeltrådad: En enda dispatcher-tråd används för att bearbeta åtgärder för en viss entitet. Om flera meddelanden skickas till en enda entitet samtidigt bearbetas åtgärderna en i taget.
- Hantering av giftmeddelanden – Det finns inget stöd för giftmeddelanden i entitetsutlösare.
- Meddelandesynlighet – Entitetsutlösare tas bort och hålls osynliga under en konfigurerbar varaktighet. Synligheten för dessa meddelanden förnyas automatiskt så länge funktionsappen körs och är felfri.
- Returvärden – Entitetsfunktioner stöder inte returvärden. Det finns specifika API:er som kan användas för att spara tillstånd eller skicka tillbaka värden till orkestreringar.
Tillståndsändringar som görs i en entitet under körningen sparas automatiskt när körningen har slutförts.
Mer information och exempel på hur du definierar och interagerar med entitetsutlösare finns i dokumentationen om varaktiga entiteter .
Entitetsklient
Med entitetsklientbindningen kan du utlösa entitetsfunktioner asynkront. Dessa funktioner kallas ibland för klientfunktioner.
Du kan binda till entitetsklienten med hjälp av attributet DurableClientAttribute .NET i .NET-klassbiblioteksfunktioner.
Entitetsklienten definieras av följande JSON-objekt i matrisen bindings
för 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
– Används i scenarier där flera funktionsappar delar samma lagringskonto men måste isoleras från varandra. Om det inte anges används standardvärdet frånhost.json
. Det här värdet måste matcha värdet som används av målentitetsfunktionerna.connectionName
– Namnet på en appinställning som innehåller ett lagringskonto anslutningssträng. Lagringskontot som representeras av den här anslutningssträng måste vara samma som används av målentitetsfunktionerna. Om det inte anges används standardlagringskontot anslutningssträng för funktionsappen.
Kommentar
I de flesta fall rekommenderar vi att du utelämnar de valfria egenskaperna och förlitar dig på standardbeteendet.
Hur du definierar en entitetsklient beror på din valda programmeringsmodell.
Kommentar
Entitetsklienter stöds ännu inte för Java.
Mer information och exempel på hur du interagerar med entiteter som en klient finns i dokumentationen om varaktiga entiteter .
host.json inställningar
Konfigurationsinställningar för Durable Functions.
Kommentar
Alla större versioner av Durable Functions stöds i alla versioner av Azure Functions-körningen. Schemat för den host.json konfigurationen skiljer sig dock något beroende på vilken version av Azure Functions-körningen och durable functions-tilläggsversionen du använder. Följande exempel är till för användning med Azure Functions 2.0 och 3.0. Om du använder Azure Functions 1.0 i båda exemplen är de tillgängliga inställningarna desamma, men avsnittet "durableTask" i host.json bör gå i roten för host.json konfiguration i stället för som ett fält under "tillägg".
{
"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
}
}
}
Namn på aktivitetshubben måste börja med en bokstav och bestå av endast bokstäver och siffror. Om det inte anges är standardnamnet för aktivitetshubben för en funktionsapp TestHubName. Mer information finns i Uppgiftshubbar.
Property | Standardvärde | beskrivning |
---|---|---|
hubName | TestHubName (DurableFunctionsHub om du använder Durable Functions 1.x) | Alternativa namn på aktivitetshubben kan användas för att isolera flera Durable Functions-program från varandra, även om de använder samma lagringsserverdel. |
controlQueueBatchSize | 32 | Antalet meddelanden som ska hämtas från kontrollkön åt gången. |
controlQueueBufferThreshold | Förbrukningsplan för Python: 32 Förbrukningsplan för JavaScript och C#: 128 Dedikerad/Premium-plan: 256 |
Antalet kontrollkömeddelanden som kan buffrads i minnet åt gången, då avsändaren väntar innan eventuella ytterligare meddelanden tas bort. |
partitionCount | 4 | Antalet partitioner för kontrollkön. Kan vara ett positivt heltal mellan 1 och 16. |
controlQueueVisibilityTimeout | 5 minuter | Tidsgränsen för synligheten för meddelanden i kön för dequeued-kontroller. |
workItemQueueVisibilityTimeout | 5 minuter | Tidsgränsen för synligheten för kömeddelanden för dequeued arbetsobjekt. |
maxConcurrentActivityFunctions | Förbrukningsplan: 10 Dedikerad/Premium-plan: 10 X antalet processorer på den aktuella datorn |
Det maximala antalet aktivitetsfunktioner som kan bearbetas samtidigt på en enda värdinstans. |
maxConcurrentOrchestratorFunctions | Förbrukningsplan: 5 Dedikerad/Premium-plan: 10 X antalet processorer på den aktuella datorn |
Det maximala antalet orkestreringsfunktioner som kan bearbetas samtidigt på en enda värdinstans. |
maxQueuePollingInterval | 30 sekunder | Det maximala avsökningsintervallet för kontroll och arbetsobjekt i formatet hh:mm:ss . Högre värden kan resultera i högre svarstider för meddelandebearbetning. Lägre värden kan leda till högre lagringskostnader på grund av ökade lagringstransaktioner. |
connectionName (2.7.0 och senare) connectionStringName (2.x) azureStorage Anslut ionStringName (1.x) |
AzureWebJobsStorage | Namnet på en appinställning eller inställningssamling som anger hur du ansluter till de underliggande Azure Storage-resurserna. När en enskild appinställning anges ska det vara en Azure Storage-anslutningssträng. |
trackingStore Anslut ionName (2.7.0 och senare) trackingStore Anslut ionStringName |
Namnet på en appinställning eller inställningssamling som anger hur du ansluter till tabellerna Historik och Instanser. När en enskild appinställning anges ska det vara en Azure Storage-anslutningssträng. Om det inte anges connectionStringName används anslutningen (Durable 2.x) eller azureStorageConnectionStringName (Durable 1.x). |
|
trackingStoreNamePrefix | Prefixet som ska användas för tabellerna Historik och Instanser när trackingStoreConnectionStringName har angetts. Om det inte anges är DurableTask standardprefixvärdet . Om trackingStoreConnectionStringName inte anges använder hubName tabellerna Historik och Instanser värdet som prefix, och alla inställningar för trackingStoreNamePrefix ignoreras. |
|
traceInputsAndOutputs | falskt | Ett värde som anger om indata och utdata för funktionsanrop ska spåras. Standardbeteendet vid spårning av funktionskörningshändelser är att inkludera antalet byte i serialiserade indata och utdata för funktionsanrop. Det här beteendet ger minimal information om hur indata och utdata ser ut utan att svälla upp loggarna eller oavsiktligt exponera känslig information. Om den här egenskapen anges till true loggas hela innehållet i funktionsindata och utdata genom att standardfunktionen loggas. |
traceReplayEvents | falskt | Ett värde som anger om orkestreringsreprishändelser ska skrivas till Application Insights. |
eventGridTopicEndpoint | URL:en för en anpassad Azure Event Grid-ämnesslutpunkt. När den här egenskapen har angetts publiceras orkestreringshändelser för livscykelmeddelanden till den här slutpunkten. Den här egenskapen stöder App Inställningar-lösning. | |
eventGridKeySettingName | Namnet på appinställningen som innehåller nyckeln som används för att autentisera med det anpassade Azure Event Grid-ämnet på EventGridTopicEndpoint . |
|
eventGridPublishRetryCount | 0 | Antalet gånger du försöker igen om publiceringen till Event Grid-ämnet misslyckas. |
eventGridPublishRetryInterval | 5 minuter | Event Grid publicerar återförsöksintervallet i formatet hh:mm:ss . |
eventGridPublishEventTypes | En lista över händelsetyper som ska publiceras till Event Grid. Om det inte anges publiceras alla händelsetyper. Tillåtna värden är Started , Completed , Failed , Terminated . |
|
useAppLease | true | När värdet är inställt på true kräver appar att ett bloblån på appnivå hämtas innan aktivitetshubbens meddelanden bearbetas. Mer information finns i dokumentationen om haveriberedskap och geo-distribution . Tillgänglig från och med v2.3.0. |
useLegacyPartitionManagement | falskt | När det är inställt på false använder använder en partitionshanteringsalgoritm som minskar risken för duplicerad funktionskörning vid utskalning. Tillgänglig från och med v2.3.0. |
useTablePartitionManagement | falskt | När värdet är inställt på true använder en algoritm för partitionshantering som är utformad för att minska kostnaderna för Azure Storage V2-konton. Tillgänglig från och med v2.10.0. Den här funktionen är för närvarande i förhandsversion och är ännu inte kompatibel med förbrukningsplanen. |
useGracefulShutdown | falskt | (Förhandsversion) Aktivera korrekt avstängning för att minska risken för att värdavstängningar misslyckas med funktionskörningar i processen. |
maxEntityOperationBatchSize(2.6.1) | Förbrukningsplan: 50 Dedikerad/Premium-plan: 5000 |
Det maximala antalet entitetsåtgärder som bearbetas som en batch. Om värdet är 1 inaktiveras batchbearbetningen och varje åtgärdsmeddelande bearbetas av ett separat funktionsanrop. |
storeInputsInOrchestrationHistory | falskt | När värdet är inställt på true anger du till Durable Task Framework att spara aktivitetsindata i historiktabellen. Detta gör det möjligt att visa aktivitetsfunktionens indata när du kör frågor mot orkestreringshistoriken. |
Många av de här inställningarna är till för att optimera prestanda. Mer information finns i Prestanda och skala.