Kötések a Durable Functionshez (Azure Functions)
A Durable Functions bővítmény három triggerkötést vezet be, amelyek vezérli a vezénylő, az entitás és a tevékenységfüggvények végrehajtását. Emellett egy kimeneti kötést is bevezet, amely ügyfélként működik a Durable Functions futtatókörnyezetében.
Ügyeljen arra, hogy a cikk tetején válassza ki a Durable Functions fejlesztési nyelvét.
Fontos
Ez a cikk mind a Python 1- és Python v2-programozási modelleket támogatja a Durable Functionshez.
Python v2 programozási modell
A Durable Functions az új Python v2 programozási modellben támogatott. A v2-modell használatához telepítenie kell a Durable Functions SDK-t, amely a PyPI-csomag azure-functions-durable
, vagy egy újabb verzió 1.2.2
. Azt is ellenőriznie host.json
kell, hogy az alkalmazás hivatkozik-e az Extension Bundles 4.x-es verziójára a v2-es modell tartós függvényekkel való használatához.
A Pythonhoz készült Durable Functions SDK adattárban visszajelzést és javaslatokat küldhet.
Vezénylési eseményindító
A vezénylési trigger lehetővé teszi a tartós vezénylési funkciók készítését. Ez az eseményindító akkor fut, ha egy új vezénylési példány van ütemezve, és amikor egy meglévő vezénylési példány eseményt kap. A vezénylési függvényeket kiváltó események közé tartoznak például a tartós időzítő lejáratai, a tevékenységfüggvények válaszai és a külső ügyfelek által kiváltott események.
Amikor függvényeket ad meg a .NET-ben, a vezénylési eseményindító az OrchestrationTriggerAttribute .NET attribútummal van konfigurálva.
Java esetén a @DurableOrchestrationTrigger
jegyzet a vezénylési eseményindító konfigurálására szolgál.
Vezénylőfüggvények írásakor a vezénylési eseményindítót a következő JSON-objektum határozza meg a bindings
function.json fájl tömbjében:
{
"name": "<Name of input parameter in function signature>",
"orchestration": "<Optional - name of the orchestration>",
"type": "orchestrationTrigger",
"direction": "in"
}
orchestration
annak a vezénylésnek a neve, amelyet az ügyfeleknek használniuk kell, amikor új példányokat szeretnének létrehozni ennek a vezénylőfüggvénynek. Ez a tulajdonság opcionális. Ha nincs megadva, a függvény neve lesz használva.
Az Azure Functions két Python-programozási modellt támogat. A vezénylési trigger definiálásának módja a választott programozási modelltől függ.
A Python v2 programozási modell lehetővé teszi egy vezénylési eseményindító definiálását a orchestration_trigger
dekorátor használatával közvetlenül a Python-függvénykódban.
A v2 modellben a Durable Functions eseményindítói és kötései egy példányból DFApp
érhetők el, amely a Durable Functions-specifikus dekorátorok exportálásának alosztálya FunctionApp
.
Ez az eseményindító-kötés belsőleg lekérdezi a konfigurált tartós tárolót az új vezénylési eseményekhez, például a vezénylési indítási eseményekhez, a tartós időzítő lejárati eseményeihez, a tevékenységfüggvény válaszeseményeihez és más függvények által kiváltott külső eseményekhez.
Eseményindító viselkedése
Íme néhány megjegyzés a vezénylési eseményindítóról:
- Egyszálas – Egyetlen diszpécserszálat használ az összes vezénylőfüggvény végrehajtásához egyetlen gazdagéppéldányon. Ezért fontos gondoskodni arról, hogy a vezénylő függvénykódja hatékony legyen, és ne végezzen I/O-t. Azt is fontos biztosítani, hogy ez a szál ne végezhessen aszinkron munkát, kivéve, ha a Durable Functions-specifikus feladattípusokra vár.
- Méregüzenetek kezelése – A vezénylési triggerek nem támogatják a méregüzeneteket.
- Üzenet láthatósága – A vezénylési eseményindító üzenetei le vannak törölve, és konfigurálható ideig láthatatlanok maradnak. Az üzenetek láthatósága automatikusan megújul, amíg a függvényalkalmazás fut és kifogástalan állapotban van.
- Visszatérési értékek – A visszatérési értékek JSON-ra szerializálva lesznek, és megmaradnak az Azure Table Storage vezénylési előzménytáblájában. Ezeket a visszatérési értékeket lekérdezheti a vezénylési ügyfélkötés, amelyet később ismertetünk.
Figyelmeztetés
Az Orchestrator függvények soha nem használhatnak bemeneti vagy kimeneti kötéseket a vezénylési trigger kötésétől eltérően. Ezzel problémákat okozhat a Durable Task bővítménysel kapcsolatban, mert előfordulhat, hogy ezek a kötések nem tartják be az egyszálas és az I/O-szabályokat. Ha más kötéseket szeretne használni, vegye fel őket egy, a vezénylő függvényből hívott tevékenységfüggvénybe. A vezénylő függvények kódolási korlátozásairól az Orchestrator függvénykód-korlátozásainak dokumentációjában talál további információt.
Figyelmeztetés
Az orchestrator függvényeket soha nem szabad deklarálni async
.
Használat aktiválása
A vezénylési trigger kötése támogatja a bemeneteket és a kimeneteket is. Íme néhány tudnivaló a bemenet és a kimenet kezeléséről:
- bemenetek – A vezénylési eseményindítók olyan bemenetekkel hívhatók meg, amelyek a környezeti bemeneti objektumon keresztül érhetők el. Minden bemenetnek JSON-szerializálhatónak kell lennie.
- kimenetek – A vezénylési triggerek támogatják a kimeneti értékeket és a bemeneteket. A függvény visszatérési értéke a kimeneti érték hozzárendelésére szolgál, és JSON-szerializálhatónak kell lennie.
Trigger minta
Az alábbi példakód bemutatja, hogyan nézhet ki a legegyszerűbb ""Helló világ!" alkalmazás" vezénylő függvény. Vegye figyelembe, hogy ez a példa vezénylő valójában nem ütemez semmilyen feladatot.
Az eseményindító definiálásához használt konkrét attribútum attól függ, hogy a C# függvényeket folyamatban vagy izolált feldolgozói folyamatban futtatja-e.
[FunctionName("HelloWorld")]
public static string Run([OrchestrationTrigger] IDurableOrchestrationContext context)
{
string name = context.GetInput<string>();
return $"Hello {name}!";
}
Feljegyzés
Az előző kód a Durable Functions 2.x-hez készült. A Durable Functions 1.x esetén a helyett IDurableOrchestrationContext
a DurableOrchestrationContext
. A verziók közötti különbségekről további információt a Durable Functions-verziók című cikkben talál.
const df = require("durable-functions");
module.exports = df.orchestrator(function*(context) {
const name = context.df.getInput();
return `Hello ${name}!`;
});
Feljegyzés
A durable-functions
kódtár gondoskodik a szinkron context.done
metódus hívásáról, amikor a generátorfüggvény kilép.
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));
}
A legtöbb vezénylő függvény tevékenységfüggvényeket hív meg, ezért íme egy ""Helló világ!" alkalmazás" példa, amely bemutatja, hogyan hívhat meg egy tevékenységfüggvényt:
[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;
}
Feljegyzés
Az előző kód a Durable Functions 2.x-hez készült. A Durable Functions 1.x esetén a helyett IDurableOrchestrationContext
a DurableOrchestrationContext
. A verziók közötti különbségekről további információt a Durable Functions verzióiról szóló cikkben talál.
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;
}
Tevékenység-eseményindító
A tevékenységindítóval olyan függvényeket hozhat létre, amelyeket a vezénylő függvények, más néven tevékenységfüggvények neveznek.
A tevékenységindító az ActivityTriggerAttribute .NET attribútummal van konfigurálva.
A tevékenységindító a @DurableActivityTrigger
széljegyzet használatával van konfigurálva.
A tevékenységindítót a következő JSON-objektum határozza meg a bindings
function.json tömbjében:
{
"name": "<Name of input parameter in function signature>",
"activity": "<Optional - name of the activity>",
"type": "activityTrigger",
"direction": "in"
}
activity
a tevékenység neve. Ez az érték az a név, amelyet a vezénylő függvények használnak a tevékenységfüggvény meghívásához. Ez a tulajdonság opcionális. Ha nincs megadva, a függvény neve lesz használva.
A tevékenységindítók definiálásának módja a választott programozási modelltől függ.
Ez az eseményindító kötés belsőleg lekérdezi a konfigurált tartós tárolót az új tevékenységvégrehajtási eseményekhez.
Eseményindító viselkedése
Íme néhány megjegyzés a tevékenységindítóról:
- Szálkezelés – A vezénylési eseményindítótól eltérően a tevékenységindítók nem korlátozzák a szálkezelést vagy az I/O-t. Ezek kezelhetők, mint a normál függvények.
- Méregüzenetek kezelése – A tevékenységindítók nem támogatják a méregüzeneteket.
- Üzenet láthatósága – A tevékenységindító üzenetei le vannak kérve, és konfigurálható ideig láthatatlanok maradnak. Az üzenetek láthatósága automatikusan megújul, amíg a függvényalkalmazás fut és kifogástalan állapotban van.
- Visszatérési értékek – A visszaadott értékek JSON-ra vannak szerializálva, és megmaradnak a konfigurált tartós tárolóban.
Használat aktiválása
A tevékenységindító kötése támogatja a bemeneteket és a kimeneteket is, ugyanúgy, mint a vezénylési eseményindítót. Íme néhány tudnivaló a bemenet és a kimenet kezeléséről:
- bemenetek – A tevékenységindítók egy vezénylő függvény bemeneteivel hívhatók meg. Minden bemenetnek JSON-szerializálhatónak kell lennie.
- kimenetek – A tevékenységfüggvények támogatják a kimeneti értékeket és a bemeneteket. A függvény visszatérési értéke a kimeneti érték hozzárendelésére szolgál, és JSON-szerializálhatónak kell lennie.
- metaadatok – A .NET-tevékenységfüggvények egy
string instanceId
paraméterhez kapcsolódva lekérhetik a hívó vezénylés példányazonosítóját.
Trigger minta
Az alábbi példakód bemutatja, hogyan nézhet ki egy egyszerű SayHello
tevékenységfüggvény.
[FunctionName("SayHello")]
public static string SayHello([ActivityTrigger] IDurableActivityContext helloContext)
{
string name = helloContext.GetInput<string>();
return $"Hello {name}!";
}
A .NET-kötés ActivityTriggerAttribute
alapértelmezett paramétertípusa az IDurableActivityContext (vagy DurableActivityContext for Durable Functions v1). A .NET-tevékenységindítók azonban támogatják a JSON-szerializálható típusok (beleértve a primitív típusok) kötését is, így ugyanez a függvény az alábbiak szerint egyszerűsíthető:
[FunctionName("SayHello")]
public static string SayHello([ActivityTrigger] string name)
{
return $"Hello {name}!";
}
module.exports = async function(context) {
return `Hello ${context.bindings.name}!`;
};
A JavaScript-kötések további paraméterekként is átadhatók, így ugyanaz a függvény az alábbiak szerint egyszerűsíthető:
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);
}
Bemeneti és kimeneti kötések használata
A tevékenységindító kötése mellett rendszeres bemeneti és kimeneti kötéseket is használhat.
Használhatja például a tevékenységkötés bemenetét, és üzenetet küldhet egy Eseményközpontnak az Event Hubs kimeneti kötésével:
{
"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;
};
Vezénylési ügyfél
A vezénylési ügyfélkötés lehetővé teszi a vezénylő függvényekkel interakcióban lévő függvények írását. Ezeket a függvényeket gyakran ügyfélfüggvényeknek nevezzük. A vezénylési példányokat például a következő módokon hajthatja végre:
- Indítsa el őket.
- Az állapotuk lekérdezése.
- Állítsa le őket.
- Eseményeket küldhet nekik futás közben.
- Példányelőzmények törlése.
A vezénylési ügyfélhez a DurableClientAttribute attribútummal (OrchestrationClientAttribute in Durable Functions v1.x) csatlakozhat.
A vezénylési ügyfélhez a jegyzet használatával @DurableClientInput
kapcsolódhat.
A tartós ügyfél eseményindítóját a következő JSON-objektum határozza meg a bindings
function.json tömbjében:
{
"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
– Olyan esetekben használatos, amikor több függvényalkalmazás is ugyanazt a tárfiókot használja, de el kell különíteni egymástól. Ha nincs megadva, a rendszer az alapértelmezett értékethost.json
használja. Ennek az értéknek meg kell egyeznie a cél vezénylőfüggvények által használt értékkel.connectionName
– Egy tárfiókot tartalmazó alkalmazásbeállítás neve kapcsolati sztring. A kapcsolati sztring által képviselt tárfióknak meg kell egyeznie a cél vezénylőfüggvények által használt fiókkal. Ha nincs megadva, a függvényalkalmazás alapértelmezett tárfiókja kapcsolati sztring.
Feljegyzés
A legtöbb esetben azt javasoljuk, hogy hagyja ki ezeket a tulajdonságokat, és az alapértelmezett viselkedésre támaszkodik.
A tartós ügyfél-eseményindító definiálásának módja a választott programozási modelltől függ.
Ügyfélhasználat
Általában az IDurableClienthez (DurableOrchestrationClient in Durable Functions v1.x) kapcsolódik, amely teljes hozzáférést biztosít a Durable Functions által támogatott vezénylési ügyfél API-khoz.
Általában az DurableClientContext
osztályhoz kötődik.
Az ügyfélobjektumokhoz való hozzáféréshez a nyelvspecifikus SDK-t kell használnia.
Íme egy példa üzenetsor által aktivált függvényre, amely elindít egy "HelloWorld" vezénylést.
[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);
}
Feljegyzés
Az előző C# kód a Durable Functions 2.x-hez készült. A Durable Functions 1.x esetében az attribútum helyett attribútumot DurableClient
kell használniaOrchestrationClient
, és a DurableOrchestrationClient
paramétertípust kell használnia helyett.IDurableOrchestrationClient
A verziók közötti különbségekről további információt a Durable Functions-verziók című cikkben talál.
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);
}
A példányok elindításával kapcsolatos további részletek a Példánykezelésben találhatók.
Entitás-eseményindító
Az entitás-eseményindítók lehetővé teszik az entitásfüggvények készítését. Ez az eseményindító támogatja egy adott entitáspéldány eseményeinek feldolgozását.
Feljegyzés
Az entitás-eseményindítók a Durable Functions 2.x-től érhetők el.
Ez az eseményindító kötés belsőleg lekérdezi a konfigurált tartós tárolót az új entitásműveletek esetében, amelyeket végre kell hajtani.
Az entitás-eseményindító az EntityTriggerAttribute .NET attribútummal van konfigurálva.
Az entitás-eseményindítót a következő JSON-objektum határozza meg a bindings
function.json tömbjében:
{
"name": "<Name of input parameter in function signature>",
"entityName": "<Optional - name of the entity>",
"type": "entityTrigger",
"direction": "in"
}
Alapértelmezés szerint egy entitás neve a függvény neve.
Feljegyzés
A Java még nem támogatja az entitás-eseményindítókat.
Az entitás-eseményindító definiálásának módja a választott programozási modelltől függ.
Eseményindító viselkedése
Íme néhány megjegyzés az entitás-eseményindítóról:
- Egyszálas: A rendszer egyetlen diszpécserszálat használ egy adott entitás műveleteinek feldolgozásához. Ha egyszerre több üzenetet küld egy entitásnak, a műveletek egyenként lesznek feldolgozva.
- Méregüzenetek kezelése – Az entitások eseményindítói nem támogatják a méregüzeneteket.
- Üzenet láthatósága – Az entitás-eseményindító üzenetei le vannak kérve, és konfigurálható ideig láthatatlanok maradnak. Az üzenetek láthatósága automatikusan megújul, amíg a függvényalkalmazás fut és kifogástalan állapotban van.
- Visszaadott értékek – Az entitásfüggvények nem támogatják a visszatérési értékeket. Vannak olyan API-k, amelyek az állapot mentésére vagy az értékek vezényléseknek való visszaadására használhatók.
Az entitások végrehajtása során végrehajtott állapotváltozások a végrehajtás befejezése után automatikusan megmaradnak.
Az entitás-eseményindítók definiálásával és használatával kapcsolatos további információkért és példákért tekintse meg a Durable Entityes dokumentációját.
Entitásügyfél
Az entitásügyfél-kötés lehetővé teszi az entitásfüggvények aszinkron aktiválását. Ezeket a függvényeket néha ügyfélfüggvényeknek is nevezik.
Az entitásügyfélhez a DurableClientAttribute .NET attribútummal lehet kapcsolódni a .NET osztálykódtár-függvényekben.
Feljegyzés
A [DurableClientAttribute]
vezénylési ügyfélhez való kötéshez is használható.
Az entitásügyfélt a következő JSON-objektum határozza meg a bindings
function.json tömbjében:
{
"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
– Olyan esetekben használatos, amikor több függvényalkalmazás is ugyanazt a tárfiókot használja, de el kell különíteni egymástól. Ha nincs megadva, a rendszer az alapértelmezett értékethost.json
használja. Ennek az értéknek meg kell egyeznie a célentitásfüggvények által használt értékkel.connectionName
– Egy tárfiókot tartalmazó alkalmazásbeállítás neve kapcsolati sztring. A kapcsolati sztring által képviselt tárfióknak meg kell egyeznie a cél entitásfüggvények által használt fiókkal. Ha nincs megadva, a függvényalkalmazás alapértelmezett tárfiókja kapcsolati sztring.
Feljegyzés
A legtöbb esetben azt javasoljuk, hogy hagyja ki az opcionális tulajdonságokat, és az alapértelmezett viselkedésre támaszkodik.
Az entitásügyfél definiálásának módja a választott programozási modelltől függ.
Feljegyzés
Az entitás-ügyfelek még nem támogatottak a Java esetében.
Az entitásokkal ügyfélként való interakcióval kapcsolatos további információkért és példákért tekintse meg a Durable Entities dokumentációját.
host.json beállítások
A Durable Functions konfigurációs beállításai.
Feljegyzés
A Durable Functions összes fő verziója támogatott az Azure Functions-futtatókörnyezet minden verziójában. A host.json konfiguráció sémája azonban kissé eltér az Azure Functions-futtatókörnyezet verziójától és a használt Durable Functions-bővítményverziótól függően. Az alábbi példák az Azure Functions 2.0-s és 3.0-s használatára szolgálnak. Ha az Azure Functions 1.0-t használja, mindkét példában ugyanazok a beállítások érhetők el, de a host.json "durableTask" szakaszának a host.json konfiguráció gyökerében kell lennie a "bővítmények" mező helyett.
{
"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
}
}
}
A feladatközpont nevének betűvel kell kezdődnie, és csak betűkből és számokból kell állnia. Ha nincs megadva, a függvényalkalmazás alapértelmezett feladatközpontjának neve a TestHubName. További információ: Task Hubs.
Tulajdonság | Alapértelmezett | Leírás |
---|---|---|
hubName | TestHubName (DurableFunctionsHub, ha Durable Functions 1.x-et használ) | Alternatív feladatközpont-nevek használatával több Durable Functions-alkalmazást is elkülöníthet egymástól, még akkor is, ha ugyanazt a tárterület-háttérrendszert használják. |
controlQueueBatchSize | 32 | A vezérlősorból egyszerre lekérendő üzenetek száma. |
controlQueueBufferThreshold | Használati terv Pythonhoz: 32 Használati terv JavaScripthez és C#: 128 Dedikált/prémium csomag: 256 |
A memóriában egyszerre pufferelhető vezérlősor-üzenetek száma, amelynél a kézbesítő megvárja a további üzenetek lekérdezése előtt. |
partitionCount | 4 | A vezérlősor partíciószáma. 1 és 16 közötti pozitív egész szám lehet. |
controlQueueVisibilityTimeout | 5 perc | A lekérdezett vezérlősorüzenetek láthatósági időtúllépése. |
workItemQueueVisibilityTimeout | 5 perc | A lekérdezett munkaelem üzenetsor-üzeneteinek láthatósági időtúllépése. |
maxConcurrentActivityFunctions | Használati terv: 10 Dedikált/Prémium csomag: 10X a processzorok száma az aktuális gépen |
Az egy gazdagéppéldányon egyidejűleg feldolgozható tevékenységfüggvények maximális száma. |
maxConcurrentOrchestratorFunctions | Használati terv: 5 Dedikált/Prémium csomag: 10X a processzorok száma az aktuális gépen |
Az egyidejűleg egyetlen gazdagéppéldányon feldolgozható vezénylőfüggvények maximális száma. |
maxQueuePollingInterval | 30 másodperc | A vezérlő és a munkaelem-üzenetsor lekérdezési időközének maximális értéke hh:mm:ss formátumban. A magasabb értékek nagyobb üzenetfeldolgozási késéseket eredményezhetnek. Az alacsonyabb értékek magasabb tárolási költségeket eredményezhetnek a megnövekedett tárolási tranzakciók miatt. |
connectionName (2.7.0 és újabb) connectionStringName (2.x) azureStorage Csatlakozás ionStringName (1.x) |
AzureWebJobsStorage | Egy alkalmazásbeállítás vagy beállításgyűjtemény neve, amely meghatározza, hogyan csatlakozhat a mögöttes Azure Storage-erőforrásokhoz. Ha egyetlen alkalmazásbeállítást ad meg, annak Azure Storage-kapcsolati sztring kell lennie. |
trackingStore Csatlakozás ionName (2.7.0 és újabb verziók) trackingStore Csatlakozás ionStringName |
Az előzmény- és példánytáblákhoz való csatlakozást meghatározó alkalmazásbeállítás vagy beállításgyűjtemény neve. Ha egyetlen alkalmazásbeállítást ad meg, annak Azure Storage-kapcsolati sztring kell lennie. Ha nincs megadva, a rendszer a connectionStringName (Durable 2.x) vagy azureStorageConnectionStringName a (Durable 1.x) kapcsolatot használja. |
|
trackingStoreNamePrefix | Az Előzmények és példányok táblákhoz használandó előtag, ha trackingStoreConnectionStringName meg van adva. Ha nincs beállítva, az alapértelmezett előtag értéke a következő lesz DurableTask : . Ha trackingStoreConnectionStringName nincs megadva, akkor az Előzmények és példányok táblák az hubName értéket használják előtagként, és a rendszer figyelmen kívül hagyja az trackingStoreNamePrefix összes beállítást. |
|
traceInputsAndOutputs | false | A függvényhívások bemeneteinek és kimeneteinek nyomon követését jelző érték. A függvényvégrehajtási események nyomon követésekor az alapértelmezett viselkedés a szerializált bemenetek és a függvényhívások kimenetei bájtjainak száma. Ez a viselkedés minimális információt nyújt arról, hogy a bemenetek és kimenetek hogyan néznek ki a naplók felfúvódása vagy a bizalmas információk véletlen felfedése nélkül. Ha ezt a tulajdonságot igaz értékre állítja, az alapértelmezett függvénynaplózás a függvénybemenetek és -kimenetek teljes tartalmát naplózza. |
traceReplayEvents | false | Egy érték, amely jelzi, hogy a vezénylési ismétlési eseményeket az Alkalmazás Elemzések kell-e írni. |
eventGridTopicEndpoint | Egy Egyéni Azure Event Grid-témakörvégpont URL-címe. Ha ez a tulajdonság be van állítva, a vezénylési életciklus értesítési eseményei közzé lesznek téve ezen a végponton. Ez a tulajdonság támogatja az alkalmazás Gépház felbontását. | |
eventGridKeySettingName | Annak az alkalmazásbeállításnak a neve, amely tartalmazza az Azure Event Grid egyéni témakörével való hitelesítéshez használt kulcsot a következő helyen EventGridTopicEndpoint : . |
|
eventGridPublishRetryCount | 0 | Az újrapróbálkozások száma, ha az Event Grid-témakörben való közzététel sikertelen. |
eventGridPublishRetryInterval | 5 perc | Az Event Grid hh:mm:ss formátumban teszi közzé az újrapróbálkozási időközt . |
eventGridPublishEventTypes | Az Event Gridben közzéteendő eseménytípusok listája. Ha nincs megadva, az összes eseménytípus közzé lesz téve. Az engedélyezett értékek a következők: Started , Completed , Failed Terminated . |
|
useAppLease | true | Ha be van állítva, az true alkalmazásoknak alkalmazásszintű blobbérletet kell beszerezniük a feladatközpont-üzenetek feldolgozása előtt. További információkért tekintse meg a vészhelyreállítás és a földrajzi eloszlás dokumentációját. A 2.3.0-s verziótól kezdve érhető el. |
useLegacyPartitionManagement | false | Ha be van false állítva, egy partíciókezelési algoritmust használ, amely csökkenti a függvények ismétlődő végrehajtásának lehetőségét a horizontális felskálázáskor. A 2.3.0-s verziótól kezdve érhető el. |
useTablePartitionManagement | false | Ha be van true állítva, egy partíciókezelési algoritmust használ, amelyet az Azure Storage V2-fiókok költségeinek csökkentésére terveztek. A 2.10.0-s verziótól kezdve érhető el. Ez a funkció jelenleg előzetes verzióban érhető el, és még nem kompatibilis a Használat csomaggal. |
useGracefulShutdown | false | (Előzetes verzió) Engedélyezze a kecses leállítást, hogy csökkentse annak az esélyét, hogy a gazdagép leállítja a folyamaton belüli függvények végrehajtását. |
maxEntityOperationBatchSize(2.6.1) | Használati terv: 50 Dedikált/prémium csomag: 5000 |
A kötegként feldolgozott entitásműveletek maximális száma. Ha 1 értékre van állítva, a kötegelés le van tiltva, és minden műveletüzenetet egy külön függvényhívás dolgoz fel. |
storeInputsInOrchestrationHistory | false | Ha be van true állítva, a Durable Task Framework a tevékenységbemenetek mentésére utasítja az előzménytáblában. Ez lehetővé teszi a tevékenységfüggvények bemeneteinek megjelenítését a vezénylési előzmények lekérdezésekor. |
Ezek közül a beállítások közül sok a teljesítmény optimalizálására használható. További információ: Teljesítmény és skálázás.