Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De Durable Functions-extensie introduceert drie triggerbindingen die de uitvoering van orchestrator-, entiteits- en activiteitsfuncties beheren. Er wordt ook een uitvoerbinding geïntroduceerd die fungeert als een client voor de Durable Functions-runtime.
Zorg ervoor dat u bovenaan het artikel uw Durable Functions-ontwikkeltaal kiest.
Belangrijk
Dit artikel ondersteunt zowel Python v1- als Python v2-programmeermodellen voor Durable Functions.
Python v2-programmeermodel
Durable Functions wordt ondersteund in het nieuwe Python v2-programmeermodel. Als u het v2-model wilt gebruiken, moet u de Durable Functions SDK installeren. Dit is het PyPI-pakket azure-functions-durable, de versie 1.2.2 of een latere versie. U moet ook controleren host.json of uw app verwijst naar Extensiebundels versie 4.x om het v2-model te gebruiken met Durable Functions.
U kunt feedback en suggesties geven in de Durable Functions SDK voor Python-opslagplaats.
orkestratietrigger
Met de orchestrationtrigger kunt u duurzame orchestratorfuncties ontwerpen. Deze trigger wordt uitgevoerd wanneer een nieuw orchestratie-exemplaar wordt gepland en wanneer een bestaand orchestratie-exemplaar een gebeurtenis ontvangt. Voorbeelden van gebeurtenissen die orchestratorfuncties kunnen activeren, zijn duurzame timerverlooptijd, reacties op activiteitsfuncties en gebeurtenissen die door externe clients worden gegenereerd.
Wanneer u functies in .NET ontwerpt, wordt de orchestrationtrigger geconfigureerd met behulp van het . NET-kenmerk OrchestrationTriggerAttribute .
Voor Java wordt de @DurableOrchestrationTrigger aantekening gebruikt om de orchestrationtrigger te configureren.
Wanneer u orchestratorfuncties schrijft, wordt de orchestrationtrigger gedefinieerd door het volgende JSON-object in de bindings matrix van het function.json-bestand :
{
"name": "<Name of input parameter in function signature>",
"orchestration": "<Optional - name of the orchestration>",
"type": "orchestrationTrigger",
"direction": "in"
}
-
orchestrationis de naam van de orkestratie die klanten moeten gebruiken wanneer ze nieuwe exemplaren van deze orkestratiefunctie willen starten. Deze eigenschap is optioneel. Als dit niet is opgegeven, wordt de naam van de functie gebruikt.
Azure Functions ondersteunt twee programmeermodellen voor Python. De manier waarop u een orkestratietrigger definieert, is afhankelijk van het gekozen programmeermodel.
Met het Python v2-programmeermodel kunt u een indelingstrigger definiëren met behulp van de orchestration_trigger decorator rechtstreeks in uw Python-functiecode.
In het v2-model worden de Durable Functions-triggers en -bindingen geopend vanuit een exemplaar van DFApp, een subklasse van FunctionApp die extra Durable Functions-specifieke decorators exporteert.
Intern controleert deze triggerbinding de geconfigureerde duurzame opslag op nieuwe orchestratiegebeurtenissen, zoals startgebeurtenissen voor orchestratie, het verlopen van duurzame timers, antwoorden van activiteitenfuncties, en externe gebeurtenissen die door andere functies worden gegenereerd.
Triggergedrag
Hier volgen enkele notities over de orkestratietrigger:
- Single-threading - Een dispatcherthread wordt gebruikt voor alle uitvoeringen van orchestratorfuncties op één hostexemplaar. Daarom is het belangrijk om ervoor te zorgen dat orchestratorfunctiecode efficiënt is en geen I/O uitvoert. Het is ook belangrijk om ervoor te zorgen dat deze thread geen asynchroon werk uitvoert, behalve wanneer u wacht op taaktypen die specifiek zijn voor Durable Functions.
- Afhandeling van gifberichten - Er is geen ondersteuning voor gifberichten in orkestratietriggers.
- Berichtzichtbaarheid - Orchestratie-triggerberichten worden van de wachtrij gehaald en onzichtbaar gehouden voor een configureerbare duur. De zichtbaarheid van deze berichten wordt automatisch vernieuwd zolang de functie-app actief en gezond is.
- Retourwaarden - Retourwaarden worden geserialiseerd naar JSON en opgeslagen in de orkestratiegeschiedenistabel in Azure Table Storage. Deze retourwaarden kunnen worden opgevraagd door de orchestration-clientbinding, die later wordt beschreven.
Waarschuwing
Orchestrator-functies mogen nooit andere invoer- of uitvoerbindingen gebruiken dan de orchestrationtriggerbinding. Het kan problemen veroorzaken met de Durable Task-extensie omdat de koppelingen mogelijk niet voldoen aan de regels voor single-threading en I/O. Als u andere bindingen wilt gebruiken, voegt u deze toe aan een activiteitsfunctie die wordt aangeroepen vanuit de orchestratorfunctie. Zie de documentatie over orchestrator-functiecodebeperkingen voor meer informatie over het coderen van orchestratorfuncties.
Waarschuwing
Orchestrator-functies mogen nooit worden gedeclareerd async.
Triggergebruik
De orchestratie-triggerbinding ondersteunt zowel invoer als uitvoer. Hier volgen enkele dingen die u moet weten over de verwerking van invoer en uitvoer:
- invoer - Orkestratie-triggers kunnen worden aangeroepen met invoer, die toegankelijk is via het contextinvoer-object. Alle invoer moet JSON-serializeerbaar zijn.
- uitvoer - Orchestration-triggers ondersteunen zowel uitvoerwaarden als invoerwaarden. De retourwaarde van de functie wordt gebruikt om de uitvoerwaarde toe te wijzen en moet JSON-serializeerbaar zijn.
Triggervoorbeeld
In de volgende voorbeeldcode ziet u hoe de eenvoudigste orchestratorfunctie 'Hallo wereld' eruit kan zien. Met deze voorbeeldorchestrator worden geen taken gepland.
Het specifieke kenmerk dat wordt gebruikt voor het definiëren van de trigger, is afhankelijk van of u uw C# -functies in het proces of in een geïsoleerd werkproces uitvoert.
[FunctionName("HelloWorld")]
public static string Run([OrchestrationTrigger] IDurableOrchestrationContext context)
{
string name = context.GetInput<string>();
return $"Hello {name}!";
}
Opmerking
De vorige code is bedoeld voor Durable Functions 2.x. Voor Durable Functions 1.x moet u DurableOrchestrationContext in plaats van IDurableOrchestrationContext gebruiken. Zie het artikel Durable Functions-versies voor meer informatie over de verschillen tussen versies.
const df = require("durable-functions");
module.exports = df.orchestrator(function*(context) {
const name = context.df.getInput();
return `Hello ${name}!`;
});
Opmerking
De durable-functions bibliotheek zorgt ervoor dat de synchrone context.done methode wordt aangeroepen wanneer de generatorfunctie wordt afgesloten.
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 meeste orchestratorfuncties roepen activiteitsfuncties aan, dus hier volgt een 'Hallo wereld'-voorbeeld dat laat zien hoe u een activiteitsfunctie aanroept:
[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;
}
Opmerking
De vorige code is bedoeld voor Durable Functions 2.x. Voor Durable Functions 1.x moet u DurableOrchestrationContext in plaats van IDurableOrchestrationContext gebruiken. Zie het artikel Over Durable Functions-versies voor meer informatie over de verschillen tussen versies.
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 voor activiteit
Met de activiteitstrigger kunt u functies ontwerpen die worden aangeroepen door orchestratorfuncties, ook wel activiteitsfuncties genoemd.
De activiteitstrigger wordt geconfigureerd met behulp van het . NET-kenmerk ActivityTriggerAttribute .
De activiteitstrigger wordt geconfigureerd met behulp van de @DurableActivityTrigger aantekening.
De activiteitstrigger wordt gedefinieerd door het volgende JSON-object in de bindings matrix van function.json:
{
"name": "<Name of input parameter in function signature>",
"activity": "<Optional - name of the activity>",
"type": "activityTrigger",
"direction": "in"
}
-
activityis de naam van de activiteit. Deze waarde is de naam die orchestratorfuncties gebruiken om deze activiteitsfunctie aan te roepen. Deze eigenschap is optioneel. Als dit niet is opgegeven, wordt de naam van de functie gebruikt.
De manier waarop u een activiteitstrigger definieert, is afhankelijk van het gekozen programmeermodel.
Intern zorgt deze triggerbinding ervoor dat de geconfigureerde duurzame opslag wordt gecontroleerd op nieuwe gebeurtenissen van de uitvoering van activiteiten.
Triggergedrag
Hier volgen enkele opmerkingen over de activiteitstrigger:
- Threading - in tegenstelling tot de orkestratietrigger hebben activiteitstriggers geen beperkingen voor threading of I/O. Ze kunnen worden behandeld als normale functies.
- Afhandeling van gifberichten - Er is geen ondersteuning voor gifberichten in activiteitstriggers.
- Zichtbaarheid van berichten: Berichten die activiteitstriggers activeren worden uit de wachtrij gehaald en onzichtbaar gehouden voor een configureerbare periode. De zichtbaarheid van deze berichten wordt automatisch vernieuwd zolang de functie-app actief en gezond is.
- Retourwaarden: retourwaarden worden geserialiseerd naar JSON en bewaard in het geconfigureerde duurzame archief.
Triggergebruik
De activiteitstriggerbinding ondersteunt zowel invoer als uitvoer, net zoals de orchestrationtrigger. Hier volgen enkele dingen die u moet weten over de verwerking van invoer en uitvoer:
- invoer - activiteitstriggers kunnen worden aangeroepen met invoer van een orchestratorfunctie. Alle invoer moet JSON-serializeerbaar zijn.
- uitvoer : activiteitsfuncties ondersteunen zowel uitvoer- als invoerwaarden. De retourwaarde van de functie wordt gebruikt om de uitvoerwaarde toe te wijzen en moet JSON-serializeerbaar zijn.
-
metadata - .NET-activiteitsfuncties kunnen worden gebonden aan een
string instanceIdparameter om de exemplaar-id van de oproepende orkestratie op te halen.
Triggervoorbeeld
In de volgende voorbeeldcode ziet u hoe een eenvoudige SayHello activiteitsfunctie eruit kan zien.
[FunctionName("SayHello")]
public static string SayHello([ActivityTrigger] IDurableActivityContext helloContext)
{
string name = helloContext.GetInput<string>();
return $"Hello {name}!";
}
Het standaardparametertype voor de .NET-binding ActivityTriggerAttribute is IDurableActivityContext (of DurableActivityContext voor Durable Functions v1). .NET-activiteittriggers ondersteunen echter ook binding rechtstreeks met JSON-serializebare typen (inclusief primitieve typen), zodat dezelfde functie als volgt kan worden vereenvoudigd:
[FunctionName("SayHello")]
public static string SayHello([ActivityTrigger] string name)
{
return $"Hello {name}!";
}
module.exports = async function(context) {
return `Hello ${context.bindings.name}!`;
};
JavaScript-bindingen kunnen ook worden doorgegeven als extra parameters, zodat dezelfde functie als volgt kan worden vereenvoudigd:
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);
}
Invoer- en uitvoerbindingen gebruiken
U kunt naast de activiteitstriggerbinding ook reguliere invoer- en uitvoerbindingen gebruiken.
U kunt bijvoorbeeld de invoer naar uw activiteitsbinding nemen en een bericht verzenden naar een Event Hub met behulp van de Event Hubs-uitvoerbinding:
{
"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;
};
Orkestratieclient
Met de orchestration-clientbinding kunt u functies schrijven die communiceren met orchestratorfuncties. Deze functies worden vaak clientfuncties genoemd. U kunt bijvoorbeeld op de volgende manieren handelen met betrekking tot orkestratie-instanties:
- Start ze.
- Voer een query uit op hun status.
- Beëindig ze.
- Verzend gebeurtenissen naar hen terwijl zij actief zijn.
- Instantiegeschiedenis verwijderen.
U kunt verbinding maken met de orchestration-client met behulp van het kenmerk DurableClientAttribute (OrchestrationClientAttribute in Durable Functions v1.x).
U kunt verbinding maken met de orchestratieclient met behulp van de @DurableClientInput annotatie.
De duurzame clienttrigger wordt gedefinieerd door het volgende JSON-object in de bindings matrix van 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- Wordt gebruikt in scenario's waarin meerdere functie-apps hetzelfde opslagaccount delen, maar moeten worden geïsoleerd van elkaar. Als dit niet is opgegeven, wordt de standaardwaarde gebruikthost.json. Deze waarde moet overeenkomen met de waarde die wordt gebruikt door de doelorchestratorfuncties. -
connectionName- De naam van een app-instelling die een verbindingsreeks voor een opslagaccount bevat. Het opslagaccount dat wordt vertegenwoordigd door deze verbindingsreeks, moet hetzelfde zijn dat wordt gebruikt door de doelorchestratorfuncties. Als dit niet is opgegeven, wordt de standaard verbindingsreeks van het opslagaccount voor de functie-applicatie gebruikt.
Opmerking
In de meeste gevallen raden we u aan deze eigenschappen weg te laten en te vertrouwen op het standaardgedrag.
De manier waarop u een duurzame clienttrigger definieert, is afhankelijk van het gekozen programmeermodel.
Clientgebruik
Doorgaans verbindt u zich met IDurableClient (DurableOrchestrationClient in Durable Functions v1.x), waarmee u volledige toegang krijgt tot alle orchestration-client-API's die worden ondersteund door Durable Functions.
Normaal gesproken bindt u aan de DurableClientContext klas.
U moet de taalspecifieke SDK gebruiken om toegang te krijgen tot een clientobject.
Hier is een voorbeeld van een wachtrij-geactiveerde functie die een "HelloWorld"-orkestratie start.
[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);
}
Opmerking
De vorige C#-code is voor Durable Functions 2.x. Voor Durable Functions 1.x moet u het kenmerk gebruiken OrchestrationClient in plaats van het DurableClient kenmerk en moet u het DurableOrchestrationClient parametertype gebruiken in plaats van IDurableOrchestrationClient. Zie het artikel Durable Functions-versies voor meer informatie over de verschillen tussen versies.
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);
}
Meer informatie over het starten van exemplaren vindt u in Exemplaarbeheer.
Entiteitstrigger
Met entiteitstriggers kunt u entiteitsfuncties ontwerpen. Deze trigger ondersteunt het verwerken van gebeurtenissen voor een specifiek entiteitsexemplaar.
Opmerking
Entiteitstriggers zijn beschikbaar vanaf Durable Functions 2.x.
Intern controleert deze triggerbinding de geconfigureerde persistente opslag op nieuwe entiteitshandelingen die moeten worden uitgevoerd.
De entiteitstrigger wordt geconfigureerd met behulp van het .NET-kenmerk EntityTriggerAttribute .
De entiteittrigger wordt gedefinieerd door het volgende JSON-object in de bindings matrix van function.json:
{
"name": "<Name of input parameter in function signature>",
"entityName": "<Optional - name of the entity>",
"type": "entityTrigger",
"direction": "in"
}
De naam van een entiteit is standaard de naam van de functie.
Opmerking
Entiteitstriggers worden nog niet ondersteund voor Java.
De manier waarop u een entiteitstrigger definieert, is afhankelijk van het gekozen programmeermodel.
Triggergedrag
Hier volgen enkele opmerkingen over de entiteitstrigger:
- Enkelvoudige thread: Een enkele dispatcherthread wordt gebruikt voor het verwerken van bewerkingen voor een bepaalde entiteit. Als meerdere berichten gelijktijdig naar één entiteit worden verzonden, worden de bewerkingen één voor één verwerkt.
- Afhandeling van gifberichten - Er is geen ondersteuning voor gifberichten in entiteitstriggers.
- Berichtzichtbaarheid - Entiteitstriggerberichten worden uit de wachtrij gehaald en voor een configureerbare tijd onzichtbaar gehouden. De zichtbaarheid van deze berichten wordt automatisch vernieuwd zolang de functie-app actief en gezond is.
- Retourwaarden : entiteitsfuncties bieden geen ondersteuning voor retourwaarden. Er zijn specifieke API's die kunnen worden gebruikt om de status op te slaan of waarden door te geven aan orkestraties.
Alle statuswijzigingen die tijdens de uitvoering aan een entiteit zijn aangebracht, worden automatisch behouden nadat de uitvoering is voltooid.
Zie de documentatie voor Durable Entities voor meer informatie en voorbeelden over het definiëren en gebruiken van entiteitstriggers.
Entiteitsclient
Met de entiteitsclientbinding kunt u asynchroon entiteitsfuncties activeren. Deze functies worden soms clientfuncties genoemd.
U kunt verbinding maken met de entiteitsclient met behulp van het . NET-kenmerk DurableClientAttribute in .NET-klassebibliotheekfuncties.
Opmerking
De [DurableClientAttribute] kan ook worden gebruikt om verbinding te maken met de orchestration-client.
De entiteitsclient wordt gedefinieerd door het volgende JSON-object in de bindings matrix van 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- Wordt gebruikt in scenario's waarin meerdere functie-apps hetzelfde opslagaccount delen, maar moeten worden geïsoleerd van elkaar. Als dit niet is opgegeven, wordt de standaardwaarde gebruikthost.json. Deze waarde moet overeenkomen met de waarde die wordt gebruikt door de doelentiteitsfuncties. -
connectionName- De naam van een app-instelling die een verbindingsreeks voor een opslagaccount bevat. Het opslagaccount dat wordt vertegenwoordigd door deze verbindingsreeks, moet dezelfde zijn die wordt gebruikt door de doelentiteitsfuncties. Als dit niet is opgegeven, wordt de standaard verbindingsreeks van het opslagaccount voor de functie-applicatie gebruikt.
Opmerking
In de meeste gevallen wordt u aangeraden de optionele eigenschappen weg te laten en te vertrouwen op het standaardgedrag.
De manier waarop u een entiteitsclient definieert, is afhankelijk van het gekozen programmeermodel.
Opmerking
Entiteitsclients worden nog niet ondersteund voor Java.
Zie de documentatie over Durable Entities voor meer informatie en voorbeelden over interactie met entiteiten als een client.
host.json-instellingen
Configuratie-instellingen voor Durable Functions.
Opmerking
Alle belangrijke versies van Durable Functions worden ondersteund in alle versies van de Azure Functions-runtime. Het schema van de configuratie host.json is echter iets anders afhankelijk van de versie van de Azure Functions-runtime en de versie van de Durable Functions-extensie die u gebruikt. De volgende voorbeelden zijn voor gebruik met Azure Functions 2.0 en 3.0. Als u In beide voorbeelden Azure Functions 1.0 gebruikt, zijn de beschikbare instellingen hetzelfde, maar moet de sectie DurableTask van de host.json in de hoofdmap van de host.json-configuratie gaan in plaats van als veld onder 'extensies'.
{
"extensions": {
"durableTask": {
"hubName": "MyTaskHub",
"defaultVersion": "1.0",
"versionMatchStrategy": "CurrentOrOlder",
"versionFailureStrategy": "Reject",
"storageProvider": {
"connectionStringName": "AzureWebJobsStorage",
"controlQueueBatchSize": 32,
"controlQueueBufferThreshold": 256,
"controlQueueVisibilityTimeout": "00:05:00",
"maxQueuePollingInterval": "00:00:30",
"partitionCount": 4,
"trackingStoreConnectionStringName": "TrackingStorage",
"trackingStoreNamePrefix": "DurableTask",
"useLegacyPartitionManagement": false,
"useTablePartitionManagement": true,
"workItemQueueVisibilityTimeout": "00:05:00",
"QueueClientMessageEncoding": "UTF8"
},
"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,
"maxConcurrentEntityFunctions": 10,
"extendedSessionsEnabled": false,
"extendedSessionIdleTimeoutInSeconds": 30,
"useAppLease": true,
"useGracefulShutdown": false,
"maxEntityOperationBatchSize": 50,
"maxOrchestrationActions": 100000,
"storeInputsInOrchestrationHistory": false
}
}
}
Namen van taakhubs moeten beginnen met een letter en mogen alleen letters en cijfers bevatten. Als dit niet is opgegeven, is de standaardnaam van de taakhub voor een app-functie TestHubName. Zie voor meer informatie Taakhubs.
| Vastgoed | Verstek | Beschrijving |
|---|---|---|
| hubNaam | TestHubName (DurableFunctionsHub als u Durable Functions 1.x gebruikt) | Er kunnen alternatieve namen voor taakhubs worden gebruikt om meerdere Durable Functions-toepassingen van elkaar te isoleren, zelfs als ze dezelfde back-end voor opslag gebruiken. |
| standaardversie | De standaardversie die wordt toegewezen aan nieuwe orkestratie-exemplaren. Wanneer dit wordt gespecificeerd, worden nieuwe orchestratie-instanties permanent gekoppeld aan deze versiewaarde. Wordt gebruikt door de orchestration-versiebeheerfunctie om scenario's zoals implementaties zonder downtime met belangrijke wijzigingen mogelijk te maken. U kunt elke tekenreekswaarde voor de versie gebruiken. | |
| versieMatchStrategie | CurrentOrOlder | Bepaalt hoe orkestratieversies overeenkomen bij het laden van orkestratiefuncties. Geldige waarden zijn None, Stricten CurrentOrOlder. Zie orchestration versioning voor een gedetailleerde uitleg. |
| versieFalenStrategie | Verwerpen | Bepaalt wat er gebeurt wanneer een orchestrationversie niet overeenkomt met de huidige versie van defaultVersion. Geldige waarden zijn Reject en Fail. Zie orchestration versioning voor een gedetailleerde uitleg. |
| controlQueueBatchSize | 32 | Het aantal berichten dat tegelijkertijd moet worden opgehaald uit de controlewachtrij. |
| bufferdrempel voor de controlewachtrij |
Verbruiksabonnement voor Python: 32 Verbruiksabonnement voor andere talen: 128 Dedicated/Premium-abonnement: 256 |
Het aantal controlewachtrijberichten dat in het geheugen tegelijk kan worden gebufferd, waarna de dispatcher wacht totdat extra berichten uit de wachtrij worden verwijderd. In sommige situaties kan het verminderen van deze waarde het geheugenverbruik aanzienlijk verminderen. |
| aantal partities | 4 | Het aantal partities voor de controlewachtrij. Kan een positief geheel getal tussen 1 en 16 zijn. Als u deze waarde wijzigt, moet u een nieuwe taakhub configureren. |
| controlQueueVisibilityTimeout (beheertekenreeks voor zichtbaarheidstijd) | 5 minuten | De zichtbaarheidstijd van berichten die uit de controlewachtrij zijn gehaald. |
| werkItemWachtrijZichtbaarheidTimeout | 5 minuten | De tijdsduur voor zichtbaarheid van berichten in de werkitemwachtrij na het verwijderen uit de wachtrij. |
| maximale gelijktijdige activiteitsfuncties |
Verbruiksplan: 10 Dedicated/Premium-abonnement: 10X het aantal processors op de huidige computer |
Het maximum aantal activiteitenfuncties dat gelijktijdig kan worden verwerkt op één exemplaar van een host. |
| maxConcurrentOrchestratorFunctions |
Verbruiksabonnement: 5 Dedicated/Premium-abonnement: 10X het aantal processors op de huidige computer |
Het maximale aantal orchestratorfuncties dat tegelijkertijd kan worden verwerkt op één exemplaar van een host. |
| Maximale gelijktijdige entiteitsfuncties |
Verbruiksabonnement: 5 Dedicated/Premium-abonnement: 10X het aantal processors op de huidige computer |
Het maximum aantal entiteitsfuncties dat gelijktijdig kan worden verwerkt op één hostexemplaar. Deze instelling is alleen van toepassing wanneer u de durable task scheduler gebruikt. Anders is het maximum aantal gelijktijdige entiteitsuitvoeringen beperkt tot maxConcurrentOrchestratorFunctions. |
| maxQueuePollingInterval | 30 seconden | Het maximale controle- en werkitemwachtrij-polling-interval in de indeling uu:mm:ss. Hogere waarden kunnen resulteren in hogere berichtverwerkingslatenties. Lagere waarden kunnen resulteren in hogere opslagkosten omdat er een toename is in opslagtransacties. |
| connectionName (2.7.0 en hoger) ConnectionString-Naam (2.x) azureStorageConnectionStringName (1.x) |
AzureWebJobsOpslag | De naam van een app-instelling of verzameling die aangeeft hoe u verbinding maakt met de onderliggende Azure Storage-resources. Wanneer er één app-instelling wordt opgegeven, moet dit een Azure Storage-verbindingsreeks zijn. |
| trackingStoreConnectionName (2.7.0 en hoger) trackingStoreConnectionStringNaam |
De naam van een app-instelling of verzameling die aangeeft hoe verbinding moet worden gemaakt met de tabellen Geschiedenis en Exemplaren. Wanneer er één app-instelling wordt opgegeven, moet dit een Azure Storage-verbindingsreeks zijn. Als dit niet is opgegeven, wordt de connectionStringName-verbinding (Durable 2.x) of azureStorageConnectionStringName-verbinding (Durable 1.x) gebruikt. |
|
| trackingStoreNamePrefix | Het voorvoegsel dat moet worden gebruikt voor de tabellen Geschiedenis en Instanties wanneer trackingStoreConnectionStringName is opgegeven. Als deze niet is ingesteld, wordt de standaard voorvoegselwaarde DurableTask. Als trackingStoreConnectionStringName niet is opgegeven, gebruiken de tabellen Geschiedenis en Instanties de hubName waarde als voorvoegsel en wordt elke instelling voor trackingStoreNamePrefix genegeerd. |
|
| traceerIn- en uitvoer | onwaar | Een waarde die aangeeft of de invoer en uitvoer voor functieaanroepen moeten worden getraceerd. Het standaardgedrag bij het traceren van functie-uitvoeringsgebeurtenissen is om het aantal bytes in de geserialiseerde invoer en uitvoer voor functieaanroepen op te nemen. Dit gedrag biedt minimale informatie over hoe de invoer en uitvoer eruitzien zonder bloating van de logboeken te veroorzaken of per ongeluk gevoelige informatie weer te geven. Indien u deze eigenschap instelt op True, zorgt de standaard functie-logregistratie ervoor dat de volledige inhoud van functie-invoer en -uitvoer wordt vastgelegd. |
| traceReplayEvents | onwaar | Een waarde die aangeeft of orkestratie-replaygebeurtenissen naar Application Insights moeten worden geschreven. |
| eventGridTopicEndpoint (eventrasteronderwerpendpunt) | De URL van een eindpunt met aangepast onderwerp van Azure Event Grid. Wanneer deze eigenschap is ingesteld, worden meldingsgebeurtenissen van de orkestratielevenscyclus naar dit eindpunt gepubliceerd. Deze eigenschap ondersteunt de resolutie van de App-instellingen. | |
| EventGridSleutelInstellingNaam | De naam van de app-instelling met de sleutel die wordt gebruikt voor het verifiëren van het aangepaste onderwerp van Azure Event Grid op EventGridTopicEndpoint. |
|
| aantalHerhalingenPublicerenEventGrid | 0 | Het aantal keren dat u het opnieuw moet proberen als het publiceren naar het Event Grid-onderwerp mislukt. |
| eventGridPubliceerOpnieuwInterval | 5 minuten | Het interval voor nieuwe pogingen van Event Grid wordt gepubliceerd in de notatie uu: mm: ss. |
| eventGrid publicatie gebeurtenistypen | Een lijst met gebeurtenistypen die moeten worden gepubliceerd op Event Grid. Als u niets opgeeft, worden alle gebeurtenistypen gepubliceerd. Toegestane waarden zijn Started, Completed, Failed, Terminated. |
|
| useAppLease | waar | Wanneer ingesteld op true moeten apps eerst een blob-lease op app-niveau verkrijgen voordat ze taakhub-berichten verwerken. Zie voor meer informatie de documentatie over herstel na noodgeval en geo-distributie. Vanaf v2.3.0 beschikbaar. |
| gebruikLegacyPartitiebeheer | onwaar | Wanneer deze optie is ingesteld false, gebruikt u een algoritme voor partitiebeheer dat de mogelijkheid van dubbele functie-uitvoering vermindert bij het uitschalen. Beschikbaar vanaf v2.3.0.
Het is niet raadzaam deze waarde in te true stellen. |
| Beheer van tabelpartities gebruiken |
true in v3.x-extensie versiesfalse in v2.x-extensie versies |
Wanneer deze instelling is ingesteld true, wordt een algoritme voor partitiebeheer gebruikt dat is ontworpen om de kosten voor Azure Storage V2-accounts te verlagen. Beschikbaar vanaf WebJobs.Extensions.DurableTask v2.10.0. Voor het gebruik van deze instelling met een beheerde identiteit is WebJobs.Extensions.DurableTask v3.x of hoger of Worker.Extensions.DurableTask-versies vereist die ouder zijn dan v1.2.x of hoger. |
| GebruikZorgzaamAfsluiten | onwaar | (Preview) Schakel moeiteloos afsluiten in om de kans op mislukken van in-proces functie-uitvoeringen tijdens het afsluiten van de host te verminderen. |
| maxEntityOperationBatchSize(2.6.1) |
Verbruiksabonnement: 50 Dedicated/Premium-abonnement: 5000 |
Het maximum aantal entiteitsbewerkingen dat als batch wordt verwerkt. Als deze optie is ingesteld op 1, wordt batchverwerking uitgeschakeld en wordt elk bewerkingsbericht verwerkt door een afzonderlijke functie-aanroep. |
| slaInvoerOpInOrchestratiegeschiedenis | onwaar | Wanneer ingesteld op true, geeft het Durable Task Framework aan om activiteitsgegevens op te slaan in de geschiedenistabel. Hierdoor kunnen de invoer van functie-activiteiten worden weergegeven wanneer er query's worden uitgevoerd op de orchestratiegeschiedenis. |
| maxGrpcMessageSizeInBytes | 4194304 | Een geheel getal dat de maximale grootte, in bytes, instelt van berichten die de gRPC-client voor DurableTaskClient kan ontvangen. Dit geldt voor Durable Functions .NET Isolated en Java. |
| grpcHttpClientTimeout | 100 seconden | Hiermee stelt u de time-out in voor de HTTP-client die wordt gebruikt door de gRPC-client in Durable Functions, die momenteel wordt ondersteund voor .NET geïsoleerde apps (.NET 6 en latere versies) en voor Java. |
| QueueClientMessageEncoding | UTF8 | Hiermee geeft u de coderingsstrategie voor Azure Storage-wachtrijberichten op. Geldige waarden zijn UTF8 en Base64. Is van toepassing wanneer u Microsoft.Azure.WebJobs.Extensions.DurableTask 3.4.0 of hoger gebruikt, of Microsoft.Azure.Functions.Worker.Extensions.DurableTask 1.7.0 of hoger. |
Veel van deze instellingen zijn voor het optimaliseren van de prestaties. Zie Prestaties en schaal voor meer informatie.