Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A Azure Functions egyik funkciója, a Durable Functions használatával állapotalapú függvényeket írhat kiszolgáló nélküli környezetben. Durable Functions kezeli az alkalmazás állapotát, ellenőrzőpontjait és újraindításait.
Ebben a gyors kezdési útmutatóban létrehoz és tesztel egy Durable Functions alkalmazást Java nyelven.
Egy alapszintű Durable Functions-alkalmazás három funkcióval rendelkezik:
-
Vezénylő függvény (
Cities): Más függvényeket vezénylő munkafolyamat. -
Tevékenységfüggvény (
Capitalize): Az a függvény, amelyet a vezénylő a munka elvégzésére hív fel, és egy értéket ad vissza. -
Ügyfélfüggvény (
StartOrchestration): HTTP-aktivált függvény, amely elindítja az orchestrátort.
Ez a rövid útmutató három beállítási útvonalat kínál. Az előnyben részesített megközelítés kiválasztásához használja az oldal tetején található választógombot:
- Manuális beállítás: Minden fájlt kézzel hozhat létre a projektstruktúra teljes körű vezérléséhez.
- Maven-parancs: Egy Maven-archetípus használatával egy parancsban hozhatja létre a projektet.
- Visual Studio Code: A VS Code Azure Functions bővítmény használatával generálhatja a projektet egy irányított felhasználói felületen keresztül.
Prerequisites
A gyors kezdéshez ezekre lesz szüksége:
A Java Developer Kit 8- vagy újabb verziója telepítve van.
Az Apache Maven 3.0-s vagy újabb verziója telepítve van.
Az Azure Functions Core Tools legújabb verziója.
Az Azure Functions 4.x esetében a Core Tools 4.0.4915-ös vagy újabb verziójára van szükség.
EGY HTTP-teszteszköz , amely biztonságossá teszi az adatokat. További információ: HTTP-teszteszközök.
Visual Studio Code a Azure Functions kiterjesztéssel telepítve (csak a Visual Studio Code beállítási útvonalhoz szükséges).
Azure-előfizetés. A Durable Functions használatához rendelkeznie kell egy Azure Storage fiókkal.
Ha nem rendelkezik Azure-fiókkal, a kezdés előtt hozzon létre egy ingyenes fiókot .
Szükséges függőségek és beépülő modulok hozzáadása a projekthez
Adja hozzá a következő kódot a pom.xml fájlhoz. A másolás előtt cserélje le your-unique-app-name egy globálisan egyedi függvényalkalmazás nevére. Állítsa be a region, javaVersion és resourceGroup elemeket, hogy igazodjanak a környezetéhez.
<properties>
<azure.functions.maven.plugin.version>1.18.0</azure.functions.maven.plugin.version>
<azure.functions.java.library.version>3.0.0</azure.functions.java.library.version>
<durabletask.azure.functions>1.0.0</durabletask.azure.functions>
<functionAppName>your-unique-app-name</functionAppName>
</properties>
<dependencies>
<dependency>
<groupId>com.microsoft.azure.functions</groupId>
<artifactId>azure-functions-java-library</artifactId>
<version>${azure.functions.java.library.version}</version>
</dependency>
<dependency>
<groupId>com.microsoft</groupId>
<artifactId>durabletask-azure-functions</artifactId>
<version>${durabletask.azure.functions}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
</plugin>
<plugin>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-functions-maven-plugin</artifactId>
<version>${azure.functions.maven.plugin.version}</version>
<configuration>
<appName>${functionAppName}</appName>
<resourceGroup>java-functions-group</resourceGroup>
<appServicePlanName>java-functions-app-service-plan</appServicePlanName>
<region>westus</region>
<runtime>
<os>windows</os>
<javaVersion>11</javaVersion>
</runtime>
<appSettings>
<property>
<name>FUNCTIONS_EXTENSION_VERSION</name>
<value>~4</value>
</property>
</appSettings>
</configuration>
<executions>
<execution>
<id>package-functions</id>
<goals>
<goal>package</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
</plugins>
</build>
Adja hozzá a szükséges JSON-fájlokat
Vegyen fel egy host.json fájlt a projektkönyvtárba. A következő példához hasonlóan kell kinéznie:
{
"version": "2.0",
"logging": {
"logLevel": {
"DurableTask.AzureStorage": "Warning",
"DurableTask.Core": "Warning"
}
},
"extensions": {
"durableTask": {
"hubName": "JavaTestHub"
}
},
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.*, 5.0.0)"
}
}
Note
Durable Functions Java esetén bővítménycsomag v4 szükséges. A korábbi csomagok nem támogatottak. További információkért tekintse meg a bővítménycsomagok dokumentációját.
A Durable Functionsnek szüksége van egy tárolószolgáltatóra a futtatókörnyezet állapotának tárolásához. Adjon hozzá egy local.settings.json fájlt a projektkönyvtárhoz a társzolgáltató konfigurálásához. Az Azure Storage szolgáltatóként való használatához állítsa be az Azure Storage-fiók kapcsolati sztring értékétAzureWebJobsStorage:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "<your storage account connection string>",
"FUNCTIONS_WORKER_RUNTIME": "java"
}
}
Important
A local.settings.json fájl titkos kulcsokat tartalmazhat. Győződjön meg arról, hogy hozzáadja a .gitignore fájlhoz, hogy elkerülje az elmentését a forrásvezérlőbe.
Hozz létre a Durable Functions-vezénylőt, feladatokat és kliensfunkciókat
Az alábbi mintakód egy egyszerű példát mutat be az egyes függvénytípusokra:
import com.microsoft.azure.functions.annotation.*;
import com.microsoft.azure.functions.*;
import java.util.*;
import com.microsoft.durabletask.*;
import com.microsoft.durabletask.azurefunctions.DurableActivityTrigger;
import com.microsoft.durabletask.azurefunctions.DurableClientContext;
import com.microsoft.durabletask.azurefunctions.DurableClientInput;
import com.microsoft.durabletask.azurefunctions.DurableOrchestrationTrigger;
public class DurableFunctionsSample {
/**
* This HTTP-triggered function starts the orchestration.
*/
@FunctionName("StartOrchestration")
public HttpResponseMessage startOrchestration(
@HttpTrigger(name = "req", methods = {HttpMethod.GET, HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<Optional<String>> request,
@DurableClientInput(name = "durableContext") DurableClientContext durableContext,
final ExecutionContext context) {
context.getLogger().info("Java HTTP trigger processed a request.");
DurableTaskClient client = durableContext.getClient();
String instanceId = client.scheduleNewOrchestrationInstance("Cities");
context.getLogger().info("Created new Java orchestration with instance ID = " + instanceId);
return durableContext.createCheckStatusResponse(request, instanceId);
}
/**
* This is the orchestrator function, which can schedule activity functions, create durable timers,
* or wait for external events in a way that's completely fault-tolerant.
*/
@FunctionName("Cities")
public String citiesOrchestrator(
@DurableOrchestrationTrigger(name = "taskOrchestrationContext") TaskOrchestrationContext ctx) {
String result = "";
result += ctx.callActivity("Capitalize", "Tokyo", String.class).await() + ", ";
result += ctx.callActivity("Capitalize", "London", String.class).await() + ", ";
result += ctx.callActivity("Capitalize", "Seattle", String.class).await() + ", ";
result += ctx.callActivity("Capitalize", "Austin", String.class).await();
return result;
}
/**
* This is the activity function that is invoked by the orchestrator function.
*/
@FunctionName("Capitalize")
public String capitalize(@DurableActivityTrigger(name = "name") String name, final ExecutionContext context) {
context.getLogger().info("Capitalizing: " + name);
return name.toUpperCase();
}
}
Helyi Durable Functions projekt létrehozása a Maven paranccsal
Futtassa a következő parancsot egy olyan projekt létrehozásához, amely egy Durable Functions alkalmazás alapfüggvényeit tartalmazza:
mvn archetype:generate -DarchetypeGroupId=com.microsoft.azure -DarchetypeArtifactId=azure-functions-archetype -DarchetypeVersion=1.62 -Dtrigger=durablefunctions
A parancssorban adja meg a következő információkat:
| Haladéktalan | Action |
|---|---|
| groupId | Írja be a com.function függvényt. |
| artifactId | Adja meg a myDurableFunction parancsot. |
| verzió | Válassza az 1.0-PILLANATKÉP lehetőséget. |
| csomag | Írja be a com.function függvényt. |
| Y | Írja be az Y értéket, és a megerősítéshez válassza az Enter billentyűt. |
Most már van egy helyi projektje, amely egy alapszintű Durable Functions-alkalmazásban található három függvényt tartalmazza. Az archetípus automatikusan függőségként szerepel com.microsoft:durabletask-azure-functions a pom.xml fájlban.
A Durable Functions háttértárszolgáltatójának konfigurálása
A Durable Functionsnek szüksége van egy tárolószolgáltatóra a futtatókörnyezet állapotának tárolásához. Az Azure Storage-t a local.settings.json társzolgáltatójaként állíthatja be. Használja az Azure Storage-fiók kapcsolati sztringjét az alábbi példában AzureWebJobsStorage értékként:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "<your storage account connection string>",
"FUNCTIONS_WORKER_RUNTIME": "java"
}
}
Important
A local.settings.json fájl titkos kulcsokat tartalmazhat. Győződjön meg arról, hogy hozzáadja a .gitignore fájlhoz, hogy elkerülje az elmentését a forrásvezérlőbe.
Helyi projekt létrehozása
A Visual Studio Code válassza az F1 (vagy a Ctrl/Cmd+Shift+P) billentyűkombinációt a parancskatalógus megnyitásához. A promptnál (
>) írja be, majd válassza a Azure Functions: Új projekt létrehozása lehetőséget.
Válassza a Tallózás lehetőséget. A Mappa kiválasztása párbeszédpanelen lépjen a projekthez használni kívánt mappára, majd válassza a Kiválasztás lehetőséget.
A parancssorban adja meg a következő információkat:
Haladéktalan Action Nyelv kiválasztása Válassza a Java lehetőséget. A Java Válassza a Java 8 vagy újabb verzióját. Válassza ki azt a Java-verziót, amelyen a függvények futnak az Azure-ban, és amelyiket helyileg ellenőrizte. Csoportazonosító megadása Írja be a com.function függvényt. Összetevő-azonosító megadása Adja meg a myDurableFunction parancsot. Verzió megadása Adja meg 1.0-SNAPSHOT-t. Adja meg a csomag nevét Írja be a com.function függvényt. Alkalmazásnév megadása Adja meg a myDurableFunction parancsot. A buildelési eszköz kijelölése Java projekthez Válassza a Maven lehetőséget. Válassza ki, hogyan szeretné megnyitni a projektet Válassza a Megnyitás új ablakban lehetőséget.
Most már van egy projektje, amely tartalmaz egy HTTP példafüggvényt. Eltávolíthatja a létrehozott HTTP-függvényt, mert a következő lépésben hozzáadja a tartós funkciókat.
Függvények hozzáadása a projekthez
A parancskatalógusban írja be az Azure Functions: Függvény létrehozása parancsot, majd válassza ki azt.
A sablonszűrő módosításához válassza az Összes lehetőséget.
A parancssorban adja meg a következő információkat:
Haladéktalan Action Sablon kiválasztása a függvényhez Válassza a DurableFunctionsOrchestration lehetőséget. Adja meg a csomag nevét Írja be a com.function függvényt. Függvénynév megadása Adja meg a DurableFunctionsOrchestrator-t. A párbeszédpanelen válassza a Tárfiók kiválasztása lehetőséget a tárfiók beállításához, majd kövesse az utasításokat.
Most létre kell hoznia a Durable Functions-alkalmazásokhoz létrehozott három alapfüggvényt.
pom.xml és host.json konfigurálása a Durable Functions számára
Adja hozzá a következő függőséget a pom.xml fájlhoz:
<dependency>
<groupId>com.microsoft</groupId>
<artifactId>durabletask-azure-functions</artifactId>
<version>1.0.0</version>
</dependency>
Adja hozzá a extensions tulajdonságot a host.json fájlhoz. Ha a fájl már rendelkezik más tulajdonságokkal, egyesítse a extensions blokkot a meglévő JSON-fájlba:
{
"version": "2.0",
"extensions": {
"durableTask": {
"hubName": "JavaTestHub"
}
},
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.*, 5.0.0)"
}
}
A függvény helyi tesztelése
Azure Functions Core Tools lehetővé teszi egy Azure Functions projekt futtatását a helyi fejlesztési számítógépen.
Ha Visual Studio Code-ot használ, nyisson meg egy új terminálablakot, és futtassa a következő parancsokat a projekt létrehozásához:
mvn clean packageEzután futtassa a tartós függvényt:
mvn azure-functions:runA terminálpanelen másolja ki a HTTP-aktivált függvény URL-végpontját.
A HTTP-teszteszköz használatával HTTP POST-kérést küldhet az URL-végpontnak.
A válasznak a következő példához hasonlóan kell kinéznie:
{ "id": "d1b33a60-333f-4d6e-9ade-17a7020562a9", "purgeHistoryDeleteUri": "http://localhost:7071/runtime/webhooks/durabletask/instances/d1b33a60-333f-4d6e-9ade-17a7020562a9?code=ACCupah_QfGKo...", "sendEventPostUri": "http://localhost:7071/runtime/webhooks/durabletask/instances/d1b33a60-333f-4d6e-9ade-17a7020562a9/raiseEvent/{eventName}?code=ACCupah_QfGKo...", "statusQueryGetUri": "http://localhost:7071/runtime/webhooks/durabletask/instances/d1b33a60-333f-4d6e-9ade-17a7020562a9?code=ACCupah_QfGKo...", "terminatePostUri": "http://localhost:7071/runtime/webhooks/durabletask/instances/d1b33a60-333f-4d6e-9ade-17a7020562a9/terminate?reason={text}&code=ACCupah_QfGKo..." }A válasz a HTTP-függvény kezdeti eredménye. Tájékoztatja Önt, hogy a tartós folyamatvezérlés sikeresen elindult. Még nem jeleníti meg a vezénylés végeredményét. A válasz tartalmaz néhány hasznos URL-címet. Egyelőre kérdezze le a vezénylés állapotát.
Másolja ki a cél URL-címét
statusQueryGetUri, illessze be a böngésző címsorában, és hajtsa végre a kérést. Másik lehetőségként továbbra is használhatja a HTTP-teszteszközt a GET kérés kiadásához.A kérés lekérdezi az orkesztációs példányt az állapotáról. Látnia kell, hogy a példány befejeződött, és tartalmazza a tartós függvény kimeneteit vagy eredményeit, például ebben a példában:
{ "name": "Cities", "instanceId": "d1b33a60-333f-4d6e-9ade-17a7020562a9", "runtimeStatus": "Completed", "input": null, "customStatus": "", "output":"TOKYO, LONDON, SEATTLE, AUSTIN", "createdTime": "2022-12-12T05:00:02Z", "lastUpdatedTime": "2022-12-12T05:00:06Z" }