Kiszolgáló nélküli Java-alkalmazások üzembe helyezése a Quarkus használatával az Azure Functionsben
Ebben a cikkben egy kiszolgáló nélküli Java-alkalmazást fog fejleszteni, létrehozni és üzembe helyezni az Azure Functionsben a Quarkus használatával. Ez a cikk a Quarkus Funqyt és annak beépített támogatását használja a Java-hoz készült Azure Functions HTTP-eseményindítóhoz. A Quarkus és az Azure Functions használata a Quarkus programozási modell erejét biztosítja az Azure Functions skálázható és rugalmas használatával. Ha végzett, kiszolgáló nélküli Quarkus-alkalmazásokat fog futtatni az Azure Functionsben, és továbbra is figyelni fogja az alkalmazást az Azure-ban.
Előfeltételek
- A saját számítógépén telepített Azure CLI .
- Egy Azure-fiók. If you don't have an Azure subscription, create an Azure free account before you begin.
- Java JDK 17
JAVA_HOME
megfelelően konfigurálva. Ezt a cikket a Java 17 szem előtt tartásával írták, de az Azure Functions és a Quarkus a Java régebbi verzióit is támogatja. - Apache Maven 3.8.1+.
Az alkalmazásprojekt létrehozása
A cikkhez tartozó Java-mintaprojekt klónozásához használja az alábbi parancsot. A minta a GitHubon található.
git clone https://github.com/Azure-Samples/quarkus-azure
cd quarkus-azure
git checkout 2023-01-10
cd functions-quarkus
Ha a leválasztásos HEAD állapotról szóló üzenet jelenik meg, ezt az üzenetet nyugodtan figyelmen kívül hagyhatja. Mivel ez a cikk nem igényel véglegesítést, a leválasztott HEAD állapot megfelelő.
A mintafüggvény megismerése. Nyissa meg a functions-quarkus/src/main/java/io/quarkus/GreetingFunction.java fájlt.
Futtassa az alábbi parancsot. A @Funq
széljegyzet kiszolgáló nélküli függvénysé teszi a metódust (ebben az esetben funqyHello
).
@Funq
public String funqyHello() {
return "hello funqy";
}
Az Azure Functions Java saját Azure-specifikus széljegyzetekkel rendelkezik, de ezek a széljegyzetek nem szükségesek, ha a Quarkus-t az Azure Functionsben egyszerű kapacitásban használja, ahogy most is tesszük. Az Azure Functions Java-megjegyzéseivel kapcsolatos további információkért tekintse meg az Azure Functions Java fejlesztői útmutatóját.
Ha másként nem adja meg, a függvény neve megegyezik a metódus nevével. A függvény nevét a következő paranccsal is definiálhatja egy paraméterrel a széljegyzethez:
@Funq("alternateName")
public String funqyHello() {
return "hello funqy";
}
A név fontos. A rest URI része lesz a függvény meghívása, ahogy azt a cikk későbbi részében is láthatjuk.
A függvény helyi tesztelése
Quarkus fejlesztői mód futtatására használható mvn
a helyi terminálon. A Quarkus ily módon történő futtatása lehetővé teszi az élő újratöltést háttér-összeállítással. Ha módosítja a Java-fájlokat és/vagy az erőforrásfájlokat, és frissíti a böngészőt, ezek a módosítások automatikusan érvénybe lépnek.
A böngészőfrissítés aktiválja a munkaterület vizsgálatát. Ha a vizsgálat bármilyen változást észlel, a Java-fájlok újrafordítása és az alkalmazás ismételt üzembe helyezése történik. Az ismételten üzembe helyezést kérő alkalmazás a kérést szolgáltatásokat nyújtja. Ha bármilyen probléma merül fel a fordítással vagy az üzembe helyezéssel kapcsolatban, egy hibaoldal jelzi.
Az alábbi eljárásban cserélje le yourResourceGroupName
az erőforráscsoport nevét. A függvényalkalmazások nevének globálisan egyedinek kell lennie az Összes Azure-ban. Az erőforráscsoportok nevének globálisan egyedinek kell lennie egy előfizetésen belül. Ez a cikk úgy éri el a szükséges egyediséget, hogy az erőforráscsoport nevét a függvénynévre írja elő. Érdemes lehet egyedi azonosítót elővenni a létrehozott nevekre, amelyeknek egyedinek kell lenniük. Egy hasznos technika a monogramok használata, amelyet a mai dátum mmdd
követ formátumban.
Az erőforráscsoport nem szükséges az utasítások ezen részében, de később szükséges. Az egyszerűség kedvéért a Maven-projekthez meg kell határoznia a tulajdonságot.
Quarkus fejlesztői mód meghívása:
cd functions-azure mvn -DskipTests -DresourceGroup=<yourResourceGroupName> quarkus:dev
A kimenetnek az alábbihoz hasonlónak kell lennie:
... --/ __ \/ / / / _ | / _ \/ //_/ / / / __/ -/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \ --\___\_\____/_/ |_/_/|_/_/|_|\____/___/ INFO [io.quarkus] (Quarkus Main Thread) quarkus-azure-function 1.0-SNAPSHOT on JVM (powered by Quarkus xx.xx.xx.) started in 1.290s. Listening on: http://localhost:8080 INFO [io.quarkus] (Quarkus Main Thread) Profile dev activated. Live Coding activated. INFO [io.quarkus] (Quarkus Main Thread) Installed features: [cdi, funqy-http, smallrye-context-propagation, vertx] -- Tests paused Press [r] to resume testing, [o] Toggle test output, [:] for the terminal, [h] for more options>
A függvény elérése a
CURL
helyi terminál parancsával:curl localhost:8080/api/funqyHello
A kimenetnek az alábbihoz hasonlónak kell lennie:
"hello funqy"
Függőséginjektálás hozzáadása a függvényhez
A nyílt szabványú Jakarta Enterprise kiadás Contexts and Dependency Injection (CDI) függőséginjektálást biztosít a Quarkusban. Az injekciók általános és a CDI-vel való magas szintű áttekintéséhez tekintse meg a Jakarta Enterprise kiadás oktatóanyagot.
Adjon hozzá egy új függvényt, amely függőséginjektálást használ.
Hozzon létre egy GreetingService.java fájlt a functions-quarkus/src/main/java/io/quarkus könyvtárban. Használja a következő kódot a fájl forráskódjaként:
package io.quarkus; import javax.enterprise.context.ApplicationScoped; @ApplicationScoped public class GreetingService { public String greeting(String name) { return "Welcome to build Serverless Java with Quarkus on Azure Functions, " + name; } }
Mentse a fájlt.
GreetingService
egy injektálható bab, amely implementál egygreeting()
módszert. A metódus egy paraméterrel rendelkező sztringüzenetetWelcome...
name
ad vissza.Nyissa meg a meglévő functions-quarkus/src/main/java/io/quarkus/GreetingFunction.java fájlt. Cserélje le az osztályt a következő kódra egy új
gService
mező és agreeting
metódus hozzáadásához:package io.quarkus; import javax.inject.Inject; import io.quarkus.funqy.Funq; public class GreetingFunction { @Inject GreetingService gService; @Funq public String greeting(String name) { return gService.greeting(name); } @Funq public String funqyHello() { return "hello funqy"; } }
Mentse a fájlt.
Az új
greeting
függvény elérése acurl
helyi terminál parancsával:curl -d '"Dan"' -X POST localhost:8080/api/greeting
A kimenetnek az alábbihoz hasonlónak kell lennie:
"Welcome to build Serverless Java with Quarkus on Azure Functions, Dan"
Fontos
Az élő kódolás (más néven fejlesztői mód) lehetővé teszi az alkalmazás futtatását és a módosítások menet közbeni módosítását. A Quarkus automatikusan újrafordítást végez, és újra betölti az alkalmazást a módosítások végrehajtásakor. Ez egy hatékony és hatékony fejlesztési stílus, amelyet ebben a cikkben fog használni.
Mielőtt továbblép a következő lépésre, állítsa le a Quarkus fejlesztői módot a Ctrl+C billentyűkombinációval.
Az alkalmazás üzembe helyezése az Azure-ban
Ha még nem tette meg, jelentkezzen be az Azure-előfizetésbe az alábbi bejelentkezési paranccsal, és kövesse a képernyőn megjelenő utasításokat:
az login
Megjegyzés:
Ha több Azure-bérlő van társítva az Azure-beli hitelesítő adataival, meg kell adnia, hogy melyik bérlőbe szeretne bejelentkezni. Ezt a beállítással
--tenant
teheti meg. For example:az login --tenant contoso.onmicrosoft.com
.Folytassa a folyamatot a webböngészőben. Ha nem érhető el webböngésző, vagy ha a webböngésző nem nyitható meg, használja az eszközkód-folyamatot a következővel
az login --use-device-code
: .A sikeres bejelentkezés után a helyi terminál kimenetének a következőhöz hasonlóan kell kinéznie:
xxxxxxx-xxxxx-xxxx-xxxxx-xxxxxxxxx 'Microsoft' [ { "cloudName": "AzureCloud", "homeTenantId": "xxxxxx-xxxx-xxxx-xxxx-xxxxxxx", "id": "xxxxxx-xxxx-xxxx-xxxx-xxxxxxxx", "isDefault": true, "managedByTenants": [], "name": "Contoso account services", "state": "Enabled", "tenantId": "xxxxxxx-xxxx-xxxx-xxxxx-xxxxxxxxxx", "user": { "name": "user@contoso.com", "type": "user" } } ]
A függvények létrehozása és üzembe helyezése az Azure-ban.
Az előző lépésben létrehozott pom.xml fájl a következőt használja
azure-functions-maven-plugin
: . A futtatásmvn install
konfigurációs fájlokat és egy szükségesazure-functions-maven-plugin
átmeneti könyvtárat hoz létre. EhhezyourResourceGroupName
használja a korábban használt értéket.mvn clean install -DskipTests -DtenantId=<your tenantId from shown previously> -DresourceGroup=<yourResourceGroupName> azure-functions:deploy
Az üzembe helyezés során jelentkezzen be az Azure-ba. A
azure-functions-maven-plugin
beépülő modul úgy van konfigurálva, hogy a projekt minden üzembe helyezésekor kérje az Azure-bejelentkezést. A build során az alábbihoz hasonló kimenet jelenik meg:[INFO] Auth type: DEVICE_CODE To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code AXCWTLGMP to authenticate.
A kimenet szerint végezze el a hitelesítést az Azure-ban a böngésző és a megadott eszközkód használatával. Számos egyéb hitelesítési és konfigurációs lehetőség érhető el. A teljes referenciadokumentáció
azure-functions-maven-plugin
az Azure Functions: Configuration Details webhelyen érhető el.A hitelesítés után a buildnek folytatódnia kell, és be kell fejeződnie. Győződjön meg arról, hogy a kimenet a
BUILD SUCCESS
végéhez közeledik.Successfully deployed the artifact to https://quarkus-demo-123451234.azurewebsites.net
A függvényt az Azure-ban aktiváló URL-címet is megtalálhatja a kimeneti naplóban:
[INFO] HTTP Trigger Urls: [INFO] quarkus : https://quarkus-azure-functions-http-archetype-20220629204040017.azurewebsites.net/api/{*path}
Az üzembe helyezés befejeződése eltarthat egy ideig. Addig is vizsgáljuk meg az Azure Functionst az Azure Portalon.
A kiszolgáló nélküli függvény elérése és monitorozása az Azure-ban
Jelentkezzen be a portálra, és győződjön meg arról, hogy ugyanazt a bérlőt és előfizetést választotta ki, amelyet az Azure CLI-ben használt.
Írja be a függvényalkalmazást az Azure Portal tetején található keresősávra, és válassza az Enter billentyűt. A függvényalkalmazást üzembe kell helyezni, és a névvel
<yourResourceGroupName>-function-quarkus
együtt kell megjelennie.Válassza ki a függvényalkalmazást a részletes információk megjelenítéséhez, például a hely, az előfizetés, az URL-cím, a metrikák és az App Service-csomag megjelenítéséhez. Ezután válassza ki az URL-címet .
Győződjön meg arról, hogy az üdvözlőlapon az látható, hogy a függvényalkalmazás "működik".
Hívja meg a függvényt
greeting
a helyi terminál következőcurl
parancsával.Fontos
Cserélje le
YOUR_HTTP_TRIGGER_URL
a saját függvény URL-címét, amelyet az Azure Portalon vagy a kimenetben talál.curl -d '"Dan on Azure"' -X POST https://YOUR_HTTP_TRIGGER_URL/api/greeting
A kimenetnek a következőképpen kell kinéznie:
"Welcome to build Serverless Java with Quarkus on Azure Functions, Dan on Azure"
A másik függvényt (
funqyHello
) az alábbicurl
paranccsal is elérheti:curl https://YOUR_HTTP_TRIGGER_URL/api/funqyHello
A kimenetnek meg kell egyeznie a korábban megfigyelt kimenettel:
"hello funqy"
Ha az Azure Portalon szeretné gyakorolni az alapvető metrikák képességeit, próbálja meg a függvényt egy rendszerhéjhurkon
for
belül invokolni:for i in {1..100}; do curl -d '"Dan on Azure"' -X POST https://YOUR_HTTP_TRIGGER_URL/api/greeting; done
Egy idő után megjelenik néhány metrikák adatai a portálon.
Most, hogy megnyitotta az Azure-függvényt a portálon, az alábbi funkciók érhetők el a portálról:
- Az Azure-függvény teljesítményének monitorozása. For more information, see Monitoring Azure Functions.
- Ismerkedjen meg a telemetriával. További információ: Azure Functions-telemetriai adatok elemzése az Alkalmazás Elemzések.
- Naplózás beállítása. További információ: Streamelési végrehajtási naplók engedélyezése az Azure Functionsben.
Clean up resources
Ha nincs szüksége ezekre az erőforrásokra, törölheti őket az alábbi parancs futtatásával az Azure Cloud Shellben vagy a helyi terminálon:
az group delete --name <yourResourceGroupName> --yes
Következő lépések
Ebben a cikkben megtanulta, hogyan:
- Futtassa a Quarkus fejlesztői módot.
- Funqy-alkalmazás üzembe helyezése az Azure Functionsben a következő használatával
azure-functions-maven-plugin
: . - Vizsgálja meg a függvény teljesítményét a portálon.
Az Azure Functionsről és a Quarkusról az alábbi cikkekben és hivatkozásokban talál további információt: