Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, Quarkus kullanarak sunucusuz bir Java uygulaması geliştirecek, oluşturacak ve Azure İşlevleri dağıtacaksınız. Bu makalede Quarkus Funqy ile Java için Azure İşlevleri HTTP tetikleyicisi için yerleşik destek kullanılır. Quarkus'un Azure İşlevleri ile kullanılması, Azure İşlevleri ölçeği ve esnekliği ile Quarkus programlama modelinin gücünü sağlar. bitirdiğinizde, Azure İşlevleri üzerinde sunucusuz Quarkus uygulamalarını çalıştıracak ve uygulamanızı Azure'da izlemeye devam edersiniz.
Önkoşullar
- Kendi bilgisayarınızda yüklü Azure CLI.
- Bir Azure hesabı. Azure hesabınız yoksa, başlamadan önce ücretsiz hesap oluşturun.
-
Uygun şekilde yapılandırılmış Java JDK 17
JAVA_HOME. Bu makale Java 17 düşünülerek yazılmıştır, ancak Azure İşlevleri ve Quarkus java'nın eski sürümlerini de destekler. - Apache Maven 3.8.1+.
Uygulama projesini oluşturma
Bu makalenin örnek Java projesini kopyalamak için aşağıdaki komutu kullanın. Örnek GitHub'dadır.
git clone https://github.com/Azure-Samples/quarkus-azure
cd quarkus-azure
git checkout 2023-01-10
cd functions-quarkus
Ayrılmış HEAD durumunda olduğunu belirten bir ileti görürseniz, bu iletiyi yoksaymak güvenlidir. Bu makale herhangi bir işleme gerektirmediğinden, ayrılmış HEAD durumu uygundur.
Örnek işlevi keşfedin. functions-quarkus/src/main/java/io/quarkus/GreetingFunction.java dosyasını açın.
Aşağıdaki komutu çalıştırın.
@Funq Anotasyonu, yönteminizi (bu örnekte, funqyHello) sunucusuz bir işlev yapar.
@Funq
public String funqyHello() {
return "hello funqy";
}
Azure İşlevleri Java'nın Azure'a özgü ek açıklamaları vardır, ancak burada yaptığımız gibi Azure İşlevleri üzerinde Quarkus'u basit bir kapasitede kullanırken bu ek açıklamalar gerekli değildir. Azure İşlevleri Java ek açıklamaları hakkında daha fazla bilgi için Azure İşlevleri Java geliştirici kılavuzuna bakın.
Aksini belirtmediğiniz sürece, işlevin adı yöntem adıyla aynıdır. Ek açıklama parametresiyle işlev adını tanımlamak için aşağıdaki komutu da kullanabilirsiniz:
@Funq("alternateName")
public String funqyHello() {
return "hello funqy";
}
Ad önemlidir. Makalenin ilerleyen bölümlerinde gösterildiği gibi, işlevi çağırmak REST URI'sinin bir parçası haline gelir.
İşlevi yerel olarak test etme
Yerel terminalinizde Quarkus geliştirme modunu çalıştırmak için kullanın mvn . Quarkus'un bu şekilde çalıştırılması, arka plan derlemesi ile canlı yeniden yüklemeyi etkinleştirir. Java dosyalarınızı ve/veya kaynak dosyalarınızı değiştirip tarayıcınızı yenilediğinizde, bu değişiklikler otomatik olarak geçerli olur.
Tarayıcı yenilemesi çalışma alanında bir tarama tetikler. Tarama herhangi bir değişiklik algılarsa Java dosyaları yeniden derlenir ve uygulama yeniden dağıtılır. Yeniden dağıtılan uygulamanız isteği karşılar. Derleme veya dağıtımla ilgili herhangi bir sorun varsa, bir hata sayfası size bildirir.
Aşağıdaki yordamda yourResourceGroupName 'ü bir kaynak grubu adıyla değiştirin. İşlev uygulaması adları tüm Azure'da genel olarak benzersiz olmalıdır. Kaynak grubu adları bir abonelik içinde genel olarak benzersiz olmalıdır. Bu makale, kaynak grubunun adını işlev adının önüne ekleyerek gerekli benzersizliğe ulaşır. Oluşturduğunuz ve benzersiz olması gereken tüm adlara benzersiz bir tanımlayıcıyı önceden eklemeyi göz önünde bulundurun. Yararlı bir teknik, baş harflerinizi ve ardından bugünün tarihini mmdd biçiminde kullanmaktır.
Kaynak grubu, yönergelerin bu bölümü için gerekli değildir, ancak daha sonra gereklidir. Kolaylık olması için Maven projesi, özelliğini tanımlamanızı gerektirir.
Quarkus geliştirme modunu çağır:
mvn -DskipTests -DresourceGroup=<yourResourceGroupName> quarkus:devÇıkış şu şekilde görünmelidir:
... --/ __ \/ / / / _ | / _ \/ //_/ / / / __/ -/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \ --\___\_\____/_/ |_/_/|_/_/|_|\____/___/ 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>Komutunu
CURLyerel terminalinizde kullanarak işleve erişin.curl localhost:8080/api/funqyHelloÇıkış şu şekilde görünmelidir:
"hello funqy"
İşleve bağımlılık ekleme
Açık standart teknoloji Jakarta EE Bağlamları ve Bağımlılık Ekleme (CDI), Quarkus'ta bağımlılık ekleme sağlar.
Bağımlılık ekleme kullanan yeni bir işlev ekleyin.
functions-quarkus/src/main/java/io/quarkus dizininde bir GreetingService.java dosyası oluşturun. Dosyanın kaynak kodu olarak aşağıdaki kodu kullanın:
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; } }Dosyayı kaydedin.
GreetingService,greeting()yöntemini uygulayan enjekte edilebilir bir bileşendir. Yöntem, birWelcome...dize iletisini, birnameparametresiyle döndürür.Mevcut functions-quarkus/src/main/java/io/quarkus/GreetingFunction.java dosyasını açın. Yeni bir
gServicealan vegreetingyöntemi eklemek için sınıfı aşağıdaki kodla değiştirin: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"; } }Dosyayı kaydedin.
Yerel terminalinizde
greetingkomutunu kullanarak yenicurlfonksiyonuna erişin.curl -d '"Dan"' -X POST localhost:8080/api/greetingÇıkış şu şekilde görünmelidir:
"Welcome to build Serverless Java with Quarkus on Azure Functions, Dan"Önemli
Canlı Kodlama (geliştirme modu olarak da adlandırılır), uygulamayı çalıştırmanıza ve anında değişiklik yapmanıza olanak tanır. Quarkus, değişiklikler yapıldığında uygulamayı otomatik olarak yeniden derler ve yeniden yükler. Bu, bu makale boyunca kullanacağınız güçlü ve verimli bir geliştirme stilidir.
Sonraki adıma geçmeden önce Ctrl+C tuşlarına basarak Quarkus geliştirme modunu durdurun.
Uygulamayı Azure’da dağıtma
Henüz yapmadıysanız aşağıdaki az login komutunu kullanarak Azure aboneliğinizde oturum açın ve ekrandaki yönergeleri izleyin:
az loginNot
Azure kimlik bilgilerinizle birden çok Azure kiracısı ilişkilendirildiyse, hangi kiracıda oturum açmak istediğinizi belirtmeniz gerekir. Seçeneğini kullanarak
--tenantbunu yapabilirsiniz. Örneğin:az login --tenant contoso.onmicrosoft.com.İşleme web tarayıcısında devam edin. Kullanılabilir web tarayıcısı yoksa veya web tarayıcısı açılamıyorsa ile
az login --use-device-codecihaz kodu akışını kullanın.Başarıyla oturum açtığınızda, yerel terminalinizdeki çıkış aşağıdakine benzer görünmelidir:
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" } } ]İşlevleri derleyin ve Azure'a dağıtın.
Önceki adımda oluşturduğunuz pom.xml dosyası kullanır
azure-functions-maven-plugin. Çalıştırıldığındamvn install,azure-functions-maven-pluginiçin gereken yapılandırma dosyalarını ve bir hazırlama dizinini oluşturur. içinyourResourceGroupName, daha önce kullandığınız değeri kullanın.mvn clean install -DskipTests -DtenantId=<your tenantId from shown previously> -DresourceGroup=<yourResourceGroupName> azure-functions:deployDağıtım sırasında Azure'da oturum açın.
azure-functions-maven-pluginEklenti, proje her dağıtıldığında Azure'da oturum açmayı isteyecek şekilde yapılandırılır. Derleme sırasında aşağıdakine benzer bir çıkış görüntülenir:[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.Çıktının dediği gibi yapın ve tarayıcıyı ve sağlanan cihaz kodunu kullanarak Azure'da kimlik doğrulaması yapın. Diğer birçok kimlik doğrulaması ve yapılandırma seçeneği mevcuttur. için
azure-functions-maven-pluginbaşvuru belgelerinin tamamına Azure İşlevleri: Yapılandırma Ayrıntıları bölümünden ulaşabilirsiniz.Kimlik doğrulamasından sonra derlemenin devam etmesi ve bitmesi gerekir. Çıkışta
BUILD SUCCESSifadesinin sona yakın bir yerde olduğundan emin olun.Successfully deployed the artifact to https://quarkus-demo-123451234.azurewebsites.netİşlevinizi Azure'da tetikleme URL'sini çıkış günlüğünde de bulabilirsiniz:
[INFO] HTTP Trigger Urls: [INFO] quarkus : https://quarkus-azure-functions-http-archetype-20220629204040017.azurewebsites.net/api/{*path}Dağıtımın tamamlanması biraz zaman alır. Bu arada Azure portalında Azure İşlevleri keşfedelim.
Azure'da sunucusuz işleve erişme ve bu işlevi izleme
Portalda oturum açın ve Azure CLI'da kullandığınız kiracıyı ve aboneliği seçtiğinizden emin olun.
Azure portalının üst kısmındaki arama çubuğuna işlev uygulaması yazın ve Enter tuşunu seçin. İşlev uygulamanız,
<yourResourceGroupName>-function-quarkusadıyla dağıtılmalı ve görünmelidir.
Konum, Abonelik, URL, Ölçümler ve App Service Planı gibi ayrıntılı bilgileri göstermek için işlev uygulamasını seçin. Ardından URL değerini seçin.
Hoş geldiniz sayfasında işlev uygulamanızın "çalışır durumda" olduğunu onaylayın.
greetingYerel terminalinizde aşağıdakicurlkomutu kullanarak işlevini çağırın.Önemli
Azure portalında veya çıktıda bulduğunuz kendi işlev URL'nizi
YOUR_HTTP_TRIGGER_URLile değiştirin.curl -d '"Dan on Azure"' -X POST https://YOUR_HTTP_TRIGGER_URL/api/greetingÇıkış aşağıdakine benzer görünmelidir:
"Welcome to build Serverless Java with Quarkus on Azure Functions, Dan on Azure"Ayrıca, aşağıdaki
funqyHellokomutunu kullanarak diğer işlev (curl) de erişebilirsiniz.curl https://YOUR_HTTP_TRIGGER_URL/api/funqyHelloÇıktı, daha önce gözlemlediğiniz çıktıyla aynı olmalıdır:
"hello funqy"Azure portalında temel ölçümler özelliğini kullanmak istiyorsanız, işlevi bir kabuk
fordöngüsü içinde çağırmayı deneyin:for i in {1..100}; do curl -d '"Dan on Azure"' -X POST https://YOUR_HTTP_TRIGGER_URL/api/greeting; doneBir süre sonra portalda bazı ölçüm verileri göreceksiniz.
Azure işlevinizi portalda açtığınıza göre portaldan erişebileceğiniz diğer özellikler şunlardır:
- Azure işlevinizin performansını izleyin. Daha fazla bilgi için, bkz. Azure İşlevleri’ni İzleme.
- Telemetriyi keşfedin. Daha fazla bilgi için bkz. Application Insights'ta Azure İşlevleri telemetrisini analiz etme.
- Günlük kaydını yapılandırın. Daha fazla bilgi için bkz. Azure İşlevlerinde akış yürütme günlüklerini etkinleştirme.
Kaynakları temizleme
Bu kaynaklara ihtiyacınız yoksa, aşağıdaki komutu çalıştırarak bunları silebilirsiniz:
az group delete --name <yourResourceGroupName> --yes
Sonraki adımlar
Bu makalede şunların nasıl yapılacağını öğrendiniz:
- Quarkus geliştirme modunu çalıştırın.
- kullanarak
azure-functions-maven-pluginBir Funqy uygulamasını Azure işlevlerine dağıtma. - Portalda işlevin performansını inceleyin.
Azure İşlevleri ve Quarkus hakkında daha fazla bilgi edinmek için aşağıdaki makalelere ve başvurulara bakın: