Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto článku budete vyvíjet, sestavovat a nasazovat bezserverovou aplikaci Java do Azure Functions pomocí Quarkus. Tento článek používá Quarkus Funqy a integrovanou podporu triggeru HTTP služby Azure Functions pro Javu. Použití Quarkus se službou Azure Functions poskytuje výkon programovacího modelu Quarkus se škálováním a flexibilitou azure Functions. Po dokončení spustíte bezserverové aplikace Quarkus ve službě Azure Functions a budete pokračovat v monitorování aplikace v Azure.
Požadavky
- Rozhraní příkazového řádku Azure nainstalované na vašem počítači.
- Účet Azure. Pokud nemáte účet Azure, vytvořte si bezplatný účet před tím, než začnete.
-
Java JDK 17 s
JAVA_HOMEnakonfigurovanou správně. Tento článek byl napsán s javou 17, ale Azure Functions a Quarkus také podporují starší verze Javy. - Apache Maven 3.8.1+.
Vytvoření projektu aplikace
Pomocí následujícího příkazu naklonujte ukázkový projekt Java pro tento článek. Ukázka je na GitHubu.
git clone https://github.com/Azure-Samples/quarkus-azure
cd quarkus-azure
git checkout 2023-01-10
cd functions-quarkus
Pokud se zobrazí zpráva o tom, že jste v stavu odpojeného HEAD, je bezpečné tuto zprávu ignorovat. Vzhledem k tomu, že tento článek nevyžaduje žádné commitů, je odpojený stav HEAD vhodný.
Prozkoumejte ukázkovou funkci. Otevřete soubor functions-quarkus/src/main/java/io/quarkus/GreetingFunction.java.
Spusťte následující příkaz: Poznámka @Funq vytvoří vaši metodu (v tomto případě funqyHello) bezserverovou funkci.
@Funq
public String funqyHello() {
return "hello funqy";
}
Azure Functions Java má vlastní sadu poznámek specifických pro Azure, ale tyto poznámky nejsou nutné, pokud používáte Quarkus ve službě Azure Functions v jednoduché kapacitě, jak tady děláme. Další informace o poznámkách k Javě v Azure Functions najdete v příručce pro vývojáře v Javě pro Azure Functions.
Pokud neurčíte jinak, název funkce je stejný jako název metody. K definování názvu funkce s parametrem pro anotaci můžete použít také následující příkaz:
@Funq("alternateName")
public String funqyHello() {
return "hello funqy";
}
Název je důležitý. Stane se součástí identifikátoru REST URI pro vyvolání funkce, jak je znázorněno dále v článku.
Místní testování funkce
Používá mvn se ke spuštění vývojového režimu Quarkus v místním terminálu. Spuštění Quarkus tímto způsobem umožňuje živé opětovné načítání s kompilací na pozadí. Když upravíte soubory Java nebo soubory prostředků a aktualizujete prohlížeč, projeví se tyto změny automaticky.
Aktualizace prohlížeče aktivuje kontrolu pracovního prostoru. Pokud kontrola zjistí nějaké změny, soubory Java se znovu kompilují a aplikace se znovu nasadí. Vaše znovu nasazené aplikační služby zpracovávají požadavek. Pokud dojde k problémům s kompilací nebo nasazením, zobrazí se chybová stránka s informacemi.
V následujícím postupu nahraďte yourResourceGroupName názvem skupiny prostředků. Názvy Function aplikací musí být globálně jedinečné v rámci celé služby Azure. Názvy skupin prostředků musí být globálně jedinečné v rámci předplatného. Tento článek dosahuje nezbytné jedinečnosti tím, že před název funkce přidává název skupiny prostředků. Zvažte vytvoření jedinečného identifikátoru u všech názvů, které vytvoříte, které musí být jedinečné. Užitečnou technikou je použít iniciály následované dnešním datem ve mmdd formátu.
Skupina prostředků není pro tuto část instrukcí nutná, ale bude potřebná později. Pro zjednodušení vyžaduje projekt Maven, abyste definovali vlastnost.
Vyvolání vývojového režimu Quarkus:
mvn -DskipTests -DresourceGroup=<yourResourceGroupName> quarkus:devVýstup by měl vypadat takto:
... --/ __ \/ / / / _ | / _ \/ //_/ / / / __/ -/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \ --\___\_\____/_/ |_/_/|_/_/|_|\____/___/ 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>K funkci se dostanete pomocí
CURLpříkazu v místním terminálu:curl localhost:8080/api/funqyHelloVýstup by měl vypadat takto:
"hello funqy"
Přidejte injektování závislostí do funkce
Technologie otevřeného standardu Jakarta EE Contexts a Dependency Injection (CDI) poskytuje injektování závislostí v rámci Quarkus.
Přidejte novou funkci, která používá injektáž závislostí.
V adresáři functions-quarkus/src/main/java/io/quarkus vytvořte soubor GreetingService.java. Jako zdrojový kód souboru použijte následující kód:
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; } }Uložte soubor.
GreetingServiceje injektovatelný bean, který implementuje metodugreeting(). Metoda vrátí řetězcovouWelcome...zprávu s parametremname.Otevřete existující soubor functions-quarkus/src/main/java/io/quarkus/GreetingFunction.java . Nahraďte třídu následujícím kódem pro přidání nového
gServicepole agreetingmetody: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"; } }Uložte soubor.
K nové
greetingfunkci se dostanete pomocícurlpříkazu v místním terminálu:curl -d '"Dan"' -X POST localhost:8080/api/greetingVýstup by měl vypadat takto:
"Welcome to build Serverless Java with Quarkus on Azure Functions, Dan"Důležité
Živé kódování (označované také jako vývojový režim) umožňuje spustit aplikaci a průběžně provádět změny. Quarkus automaticky znovu zkompiluje a znovu načte aplikaci při provedení změn. Jedná se o výkonný a efektivní styl vývoje, který budete používat v celém tomto článku.
Než přejdete vpřed k dalšímu kroku, zastavte režim vývoje Quarkus tak, že vyberete Ctrl+C.
Nasadit aplikaci do Azure
Pokud jste to ještě neudělali, přihlaste se ke svému předplatnému Azure pomocí následujícího příkazu az login a postupujte podle pokynů na obrazovce:
az loginPoznámka:
Pokud je k vašim přihlašovacím údajům Azure přidruženo více tenantů Azure, musíte určit, ke kterému tenantovi se chcete přihlásit. Můžete to provést pomocí možnosti
--tenant. Například:az login --tenant contoso.onmicrosoft.com.Pokračujte v procesu ve webovém prohlížeči. Pokud není k dispozici žádný webový prohlížeč nebo pokud se webovému prohlížeči nepodaří otevřít, použijte tok kódu zařízení s
az login --use-device-code.Po úspěšném přihlášení by měl výstup v místním terminálu vypadat nějak takto:
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" } } ]Sestavte a nasaďte funkce do Azure.
Soubor pom.xml , který jste vygenerovali v předchozím kroku, používá
azure-functions-maven-plugin. Spuštěnímvn installgeneruje konfigurační soubory a pracovní adresář, kterýazure-functions-maven-pluginvyžaduje. VyourResourceGroupNamepřípadě použijte hodnotu, kterou jste použili dříve.mvn clean install -DskipTests -DtenantId=<your tenantId from shown previously> -DresourceGroup=<yourResourceGroupName> azure-functions:deployBěhem nasazování se přihlaste k Azure. Modul
azure-functions-maven-pluginplug-in je nakonfigurovaný tak, aby při každém nasazení projektu zobrazil výzvu k přihlášení k Azure. Během sestavení se zobrazí výstup podobný následujícímu:[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.Postupujte podle instrukcí ve výstupu a ověřte se v Azure pomocí prohlížeče a zadaného kódu zařízení. K dispozici je mnoho dalších možností ověřování a konfigurace. Kompletní referenční dokumentace pro
azure-functions-maven-pluginje k dispozici na stránce Azure Functions: Podrobnosti o konfiguraci.Po ověření by sestavení mělo pokračovat a dokončit. Ujistěte se, že výstup zahrnuje
BUILD SUCCESSblízko na konci.Successfully deployed the artifact to https://quarkus-demo-123451234.azurewebsites.netAdresu URL pro aktivaci funkce v Azure najdete také ve výstupním protokolu:
[INFO] HTTP Trigger Urls: [INFO] quarkus : https://quarkus-azure-functions-http-archetype-20220629204040017.azurewebsites.net/api/{*path}Dokončení nasazení bude chvíli trvat. Mezitím se podíváme na Azure Functions na webu Azure Portal.
Přístup k bezserverové funkci v Azure a jejich monitorování
Přihlaste se k portálu a ujistěte se, že jste vybrali stejného tenanta a předplatného, které jste použili v Azure CLI.
Na panelu hledání v horní části portálu Azure zadejte function app a stiskněte klávesu Enter. Vaše funkční aplikace by se měla nasadit a zobrazit s názvem
<yourResourceGroupName>-function-quarkus.
Výběrem funkční aplikace zobrazíte podrobné informace, jako je umístění, předplatné, adresa URL, metriky a plán služby App Service. Pak vyberte hodnotu adresy URL .
Ověřte, že úvodní stránka zobrazuje, že je vaše aplikace funkční.
greetingFunkci vyvoláte pomocí následujícíhocurlpříkazu v místním terminálu.Důležité
Nahraďte
YOUR_HTTP_TRIGGER_URLvlastní adresou URL funkce, kterou najdete na Azure portálu nebo ve výstupu.curl -d '"Dan on Azure"' -X POST https://YOUR_HTTP_TRIGGER_URL/api/greetingVýstup by měl vypadat zhruba takto:
"Welcome to build Serverless Java with Quarkus on Azure Functions, Dan on Azure"K druhé funkci (
funqyHello) můžete přistupovat také pomocí následujícíhocurlpříkazu:curl https://YOUR_HTTP_TRIGGER_URL/api/funqyHelloVýstup by měl být stejný jako výstup, který jste si poznamenali dříve:
"hello funqy"Pokud chcete na portálu Azure uplatnit základní schopnost metrik, zkuste vyvolat funkci ve smyčce shellu
for.for i in {1..100}; do curl -d '"Dan on Azure"' -X POST https://YOUR_HTTP_TRIGGER_URL/api/greeting; donePo chvíli se na portálu zobrazí nějaká data metrik.
Teď, když jste funkci Azure otevřeli na portálu, najdete další funkce, ke kterým máte přístup z portálu:
- Monitorujte výkon funkce Azure. Další informace najdete v tématu Monitorování Azure Functions.
- Prozkoumejte telemetrii. Další informace najdete v tématu Analýza telemetrie Azure Functions v Application Insights.
- Nastavte protokolování. Další informace najdete v tématu Povolení výpisů streamování ve službě Azure Functions.
Vyčištění prostředků
Pokud tyto prostředky nepotřebujete, můžete je odstranit spuštěním následujícího příkazu:
az group delete --name <yourResourceGroupName> --yes
Další kroky
V tomto článku jste se naučili:
- Spusťte režim vývoje Quarkus.
- Nasadit aplikaci Funqy do funkcí Azure pomocí
azure-functions-maven-plugin. - Prozkoumejte výkon funkce na portálu.
Další informace o Azure Functions a Quarkus najdete v následujících článcích a odkazech: