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.
Java için Azure Kuyruk Depolama istemci kitaplığını kullanmaya başlayın. Azure Kuyruk Depolama, daha sonra almak ve işlemek üzere çok sayıda iletiyi depolamaya yönelik bir hizmettir. Paketi yüklemek için bu adımları izleyin ve temel görevler için örnek kodu deneyin.
API başvuru belgeleri | Kitaplık kaynak kodu | Paket (Maven) |
Java için Azure Kuyruk Depolama istemci kitaplığını kullanarak:
- Kuyruk oluştur
- Kuyruğa ileti ekleme
- Kuyruktaki iletilere göz atma
- Kuyruktaki iletiyi güncelleştirme
- Kuyruğun uzunluğunu al
- Kuyruktan ileti alma
- Kuyruktan iletileri silme
- Bir kuyruğu sil
Önkoşullar
- Java Development Kit (JDK) sürüm 8 veya üzeri
- Apache Maven
- Azure aboneliği - ücretsiz bir abonelik oluşturun
- Azure Depolama hesabı - depolama hesabı oluşturma
Kurulum
Bu bölümde, Java için Azure Kuyruk Depolama istemci kitaplığıyla çalışacak bir proje hazırlama işleminde size yol gösterilir.
Projeyi oluşturma
queues-quickstart adlı bir Java uygulaması oluşturun.
Bir konsol penceresinde (cmd, PowerShell veya Bash gibi) Maven kullanarak queues-quickstart adlı yeni bir konsol uygulaması oluşturun. "Bir 'Merhaba, dünya!' Java projesi oluşturmak için aşağıdaki
mvnkomutunu yazın."mvn archetype:generate ` --define interactiveMode=n ` --define groupId=com.queues.quickstart ` --define artifactId=queues-quickstart ` --define archetypeArtifactId=maven-archetype-quickstart ` --define archetypeVersion=1.4Projeyi oluşturma çıktısı aşağıdakine benzer olmalıdır:
[INFO] Scanning for projects... [INFO] [INFO] ------------------< org.apache.maven:standalone-pom >------------------- [INFO] Building Maven Stub Project (No POM) 1 [INFO] --------------------------------[ pom ]--------------------------------- [INFO] [INFO] >>> maven-archetype-plugin:3.1.2:generate (default-cli) > generate-sources @ standalone-pom >>> [INFO] [INFO] <<< maven-archetype-plugin:3.1.2:generate (default-cli) < generate-sources @ standalone-pom <<< [INFO] [INFO] [INFO] --- maven-archetype-plugin:3.1.2:generate (default-cli) @ standalone-pom --- [INFO] Generating project in Batch mode [INFO] ---------------------------------------------------------------------------- [INFO] Using following parameters for creating project from Archetype: maven-archetype-quickstart:1.4 [INFO] ---------------------------------------------------------------------------- [INFO] Parameter: groupId, Value: com.queues.quickstart [INFO] Parameter: artifactId, Value: queues-quickstart [INFO] Parameter: version, Value: 1.0-SNAPSHOT [INFO] Parameter: package, Value: com.queues.quickstart [INFO] Parameter: packageInPathFormat, Value: com/queues/quickstart [INFO] Parameter: version, Value: 1.0-SNAPSHOT [INFO] Parameter: package, Value: com.queues.quickstart [INFO] Parameter: groupId, Value: com.queues.quickstart [INFO] Parameter: artifactId, Value: queues-quickstart [INFO] Project created from Archetype in dir: C:\quickstarts\queues\queues-quickstart [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 6.394 s [INFO] Finished at: 2019-12-03T09:58:35-08:00 [INFO] ------------------------------------------------------------------------Yeni oluşturulan queues-quickstart dizinine geçin.
cd queues-quickstart
Paketleri yükleme
pom.xml Dosyayı metin düzenleyicinizde açın.
Kitaplığın en son sürümüne bağımlılık eklemek için azure-sdk-bom'i ekleyin. Aşağıdaki kod parçacığında yer tutucuyu {bom_version_to_target} sürüm numarasıyla değiştirin.
azure-sdk-bom kullanmak, her bir bağımlılığın sürümünü belirtmenize gerek kalmamanızı sağlar. Ürün reçetesi hakkında daha fazla bilgi edinmek için Azure SDK BOM README dosyasına bakın.
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-sdk-bom</artifactId>
<version>{bom_version_to_target}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Ardından aşağıdaki bağımlılık öğelerini bağımlılık grubuna ekleyin. Azure hizmetlerine parolasız bağlantılar için azure-identity bağımlılığı gereklidir.
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-storage-queue</artifactId>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
</dependency>
Uygulama çerçevesini ayarlama
Proje dizininden:
- /src/main/java/com/queues/quickstart dizinine gidin
- App.java dosyasını düzenleyicinizde açma
-
System.out.println("Hello, world");deyimini sil -
importyönergeleri ekle
Kod şu şekildedir:
package com.queues.quickstart;
/**
* Azure Queue Storage client library quickstart
*/
import com.azure.identity.*;
import com.azure.storage.queue.*;
import com.azure.storage.queue.models.*;
import java.io.*;
public class App
{
public static void main(String[] args) throws IOException
{
// Quickstart code goes here
}
}
Azure'da kimlik doğrulaması
Çoğu Azure hizmeti için uygulama istekleri yetkilendirilmelidir.
DefaultAzureCredential Azure Identity istemci kitaplığı tarafından sağlanan sınıfı kullanmak, kodunuzda Azure hizmetlerine parolasız bağlantılar uygulamak için önerilen yaklaşımdır.
Ayrıca parolaları, bağlantı dizesi veya diğer kimlik bilgilerini kullanarak Azure hizmetlerine yönelik istekleri doğrudan yetkilendirilebilirsiniz. Ancak bu yaklaşım dikkatli kullanılmalıdır. Geliştiriciler, bu gizli bilgileri güvensiz bir konumda asla açığa çıkarmamak için dikkatli olmalıdır. Parolaya veya gizli anahtara erişim kazanan herkes kimlik doğrulaması yapabilir.
DefaultAzureCredential parolasız kimlik doğrulamasına izin vermek için hesap anahtarı üzerinde gelişmiş yönetim ve güvenlik avantajları sunar. Her iki seçenek de aşağıdaki örnekte gösterilmiştir.
DefaultAzureCredential Java için Azure Identity istemci kitaplığı tarafından sağlanan bir sınıftır.
DefaultAzureCredential hakkında daha fazla bilgi edinmek için DefaultAzureCredential genel bakışına bakın.
DefaultAzureCredential birden çok kimlik doğrulama yöntemini destekler ve çalışma zamanında hangi yöntemin kullanılacağını belirler. Bu yaklaşım, uygulamanızın ortama özgü kod uygulamadan farklı ortamlarda (yerel ve üretim) farklı kimlik doğrulama yöntemleri kullanmasını sağlar.
Örneğin, uygulamanız yerel olarak geliştirirken Azure CLI oturum açma kimlik bilgilerinizi kullanarak kimlik doğrulaması yapabilir ve ardından Azure'a dağıtıldıktan sonra yönetilen kimlik kullanabilir. Bu geçiş için kod değişikliği gerekmez.
Yerel olarak geliştirme yaparken, kuyruk verilerine erişen kullanıcı hesabının doğru izinlere sahip olduğundan emin olun. Kuyruk verilerini okumak ve yazmak için Depolama Kuyruğu Veri Katkıcısı gerekir. Kendinize bu rolü atamak için Kullanıcı Erişimi Yöneticisi rolüne veya Microsoft.Authorization/roleAssignments/write eylemini içeren başka bir role atanmalısınız. Azure portalı, Azure CLI veya Azure PowerShell'i kullanarak kullanıcıya Azure RBAC rolleri atayabilirsiniz. Rol atamaları için kullanılabilir kapsamlar hakkında daha fazla bilgiyi kapsam genel bakış sayfasından öğrenebilirsiniz.
Bu senaryoda, En Az Ayrıcalık İlkesi'ni izlemek için depolama hesabı kapsamındaki kullanıcı hesabınıza izinler atayacaksınız. Bu uygulama kullanıcılara yalnızca gereken minimum izinleri verir ve daha güvenli üretim ortamları oluşturur.
Aşağıdaki örnek, depolama hesabınızdaki kuyruk verilerine hem okuma hem de yazma erişimi sağlayan Depolama Kuyruğu Verileri Katkıda Bulunanı rolünü kullanıcı hesabınıza atar.
Önemli
Çoğu durumda rol atamasının Azure'a yayılması bir veya iki dakika sürer, ancak nadir durumlarda sekiz dakikaya kadar sürebilir. Kodunuzu ilk kez çalıştırdığınızda kimlik doğrulama hataları alıyorsanız, birkaç dakika bekleyin ve yeniden deneyin.
Azure portalında ana arama çubuğunu veya sol gezintiyi kullanarak depolama hesabınızı bulun.
Depolama hesabına genel bakış sayfasında sol taraftaki menüden Erişim denetimi (IAM) öğesini seçin.
Erişim denetimi (IAM) sayfasında Rol atamaları sekmesini seçin.
Üst menüden + Ekle'yi seçin ve ardından açılan menüden Rol ataması ekle'yi seçin.
Sonuçları istenen role göre filtrelemek için arama kutusunu kullanın. Bu örnek için Depolama Kuyruğu Veri Katkıda Bulunan ifadesini arayın, eşleşen sonucu seçip ardından İleri tuşuna basın.
Erişim ata altında Kullanıcı, grup veya hizmet sorumlusu'nu seçin ve ardından + Üyeleri Seç'e tıklayın.
İletişim kutusunda Microsoft Entra kullanıcı adınızı (genellikle user@domain e-posta adresiniz) arayın ve iletişim kutusunun alt kısmındaki Seç'i seçin.
Gözden geçir + ata'yı seçerek son sayfaya gidin, ardından işlemi tamamlamak için Gözden geçir + ata'yı tekrar seçin.
Nesne modeli
Azure Kuyruk Depolama, çok sayıda iletiyi depolamaya yönelik bir hizmettir. Kuyruk iletisinin boyutu en fazla 64 KB olabilir. Kuyruk, depolama hesabının toplam kapasite sınırına kadar milyonlarca ileti içerebilir. Kuyruklar genellikle eşzamansız olarak işlenmek üzere bir iş yükü birikti oluşturmak için kullanılır. Kuyruk Depolama üç tür kaynak sunar:
- Depolama hesabı: Azure Depolama'ya tüm erişim bir depolama hesabı üzerinden yapılır. Depolama hesapları hakkında daha fazla bilgi için bkz . Depolama hesabına genel bakış
- Kuyruk: Kuyrukta bir dizi ileti vardır. Tüm iletiler bir kuyrukta olmalıdır. Kuyruk adının tamamen küçük harfli olması gerektiğini unutmayın. Kuyrukların adlandırılması hakkında daha fazla bilgi için bkz. Kuyrukları ve Meta Verileri Adlandırma.
- İleti: İleti, biçimi ne olursa olsun en çok 64 KB büyüklüktedir. İleti en fazla 7 gün kuyrukta kalabilir. Sürüm 2017-07-29 veya daha sonrası için maksimum yaşam süresi herhangi bir pozitif sayı olabilir veya iletinin süresinin dolmadığını gösteren -1 olabilir. Bu parametre atlanırsa, varsayılan yaşam süresi yedi gündür.
Aşağıdaki diyagramda bu kaynaklar arasındaki ilişki gösterilmektedir.
Bu kaynaklarla etkileşime geçmek için aşağıdaki Java sınıflarını kullanın:
-
QueueClientBuilder:QueueClientBuildersınıfı birQueueClientnesnesini yapılandırır ve örnek oluşturur. -
QueueServiceClient: depolamaQueueServiceClienthesabınızdaki tüm kuyrukları yönetmenize olanak tanır. -
QueueClient: sınıfı,QueueClienttek bir kuyruğu ve iletilerini yönetmenize ve işlemenize olanak tanır. -
QueueMessageItem:QueueMessageItemsınıfı, bir kuyruğaReceiveMessagesuygulandığında döndürülen tekil nesneleri temsil eder.
Kod örnekleri
Bu örnek kod parçacıkları, Java için Azure Kuyruk Depolama istemci kitaplığıyla aşağıdaki eylemlerin nasıl yapılacağını gösterir:
- Erişimi yetkilendirme ve istemci nesnesi oluşturma
- Kuyruk oluşturma
- Kuyruğa ileti ekleme
- Kuyruktaki iletilere göz atma
- Kuyruktaki iletiyi güncelleştirme
- Kuyruk uzunluğunu alma
- Kuyruktan ileti alma ve silme
- Bir kuyruğu sil
Erişimi yetkilendirme ve istemci nesnesi oluşturma
Rolü atadığınız Microsoft Entra hesabıyla kimliğinizin doğrulanmış olduğundan emin olun. Azure CLI, Visual Studio Code veya Azure PowerShell aracılığıyla kimlik doğrulaması yapabilirsiniz.
Aşağıdaki komutu kullanarak Azure CLI aracılığıyla Azure'da oturum açın:
az login
Kimlik doğrulamasından geçtikten sonra, depolama hesabındaki kuyruk verilerine erişmek için bir QueueClient nesnesi oluşturabilir ve DefaultAzureCredential ile yetkilendirme yapabilirsiniz.
DefaultAzureCredential önceki adımda oturum açtığınız hesabı otomatik olarak bulur ve kullanır.
Yetkilendirmek için DefaultAzureCredential kullanırken, Paketleri Yükleme bölümünde açıklandığı gibi pom.xml bağımlılığını eklediğinizden emin olun. Ayrıca, com.azure.identity dosyasına için bir içeri aktarma yönergesi eklediğinizden emin olun:
import com.azure.identity.*;
Kuyruk için bir ad belirleyin ve QueueClient'yi yetkilendirme için kullanarak DefaultAzureCredential sınıfının bir örneğini oluşturun. Depolama hesabındaki kuyruk kaynağını oluşturmak ve bunlarla etkileşim kurmak için bu istemci nesnesini kullanırız.
Önemli
Kuyruk adları yalnızca küçük harf, sayı ve kısa çizgi içerebilir ve harf veya sayı ile başlamalıdır. Her kısa çizginin önünde ve arkasında kısa çizgi dışında bir karakter bulunmalıdır. Ad da 3 ile 63 karakter uzunluğunda olmalıdır. Kuyrukları adlandırma hakkında daha fazla bilgi için Kuyrukları ve meta verilerini adlandırma bölümüne bakın.
Bu kodu main yöntem içine ekleyin ve <storage-account-name> yer tutucu değerini değiştirdiğinizden emin olun.
System.out.println("Azure Queue Storage client library - Java quickstart sample\n");
// Create a unique name for the queue
String queueName = "quickstartqueues-" + java.util.UUID.randomUUID();
// Instantiate a QueueClient
// We'll use this client object to create and interact with the queue
// TODO: replace <storage-account-name> with the actual name
QueueClient queueClient = new QueueClientBuilder()
.endpoint("https://<storage-account-name>.queue.core.windows.net/")
.queueName(queueName)
.credential(new DefaultAzureCredentialBuilder().build())
.buildClient();
Uyarı
sınıfı kullanılarak QueueClient gönderilen iletiler, UTF-8 kodlamalı bir XML isteğine dahil edilebilen bir biçimde olmalıdır. İsteğe bağlı olarak QueueMessageEncoding seçeneğini BASE64 uyumlu olmayan iletileri işleyecek şekilde ayarlayabilirsiniz.
Kuyruk oluştur
QueueClient nesnesini kullanarak, depolama hesabınızda kuyruk oluşturmak için yöntemini çağırıncreate.
Bu kodu yönteminin main sonuna ekleyin:
System.out.println("Creating queue: " + queueName);
// Create the queue
queueClient.create();
Kuyruğa ileti ekleme
Aşağıdaki kod parçacığı, sendMessage yöntemini çağırarak kuyruğa iletiler ekler. Ayrıca, bir çağrıdan SendMessageResult döndürülen bir sendMessage kaydeder. Sonuç, programın ilerleyen bölümlerinde iletiyi güncelleştirmek için kullanılır.
Bu kodu yönteminin main sonuna ekleyin:
System.out.println("\nAdding messages to the queue...");
// Send several messages to the queue
queueClient.sendMessage("First message");
queueClient.sendMessage("Second message");
// Save the result so we can update this message later
SendMessageResult result = queueClient.sendMessage("Third message");
Kuyruktaki iletilere göz atma
Kuyruktaki iletilere göz atmak için peekMessages yöntemini çağırın. Bu yöntem kuyruğun önünden bir veya daha fazla ileti alır, ancak iletinin görünürlüğünü değiştirmez.
Bu kodu yönteminin main sonuna ekleyin:
System.out.println("\nPeek at the messages in the queue...");
// Peek at messages in the queue
queueClient.peekMessages(10, null, null).forEach(
peekedMessage -> System.out.println("Message: " + peekedMessage.getMessageText()));
Kuyruktaki iletiyi güncelleştirme
yöntemini çağırarak iletinin içeriğini güncelleştirin updateMessage . Bu yöntem, iletinin görünürlük zaman aşımını ve içeriğini değiştirebilir. İleti içeriğinin boyutu 64 KB'a kadar olan UTF-8 kodlanmış bir dize olmalıdır. İletinin yeni içeriğinin yanı sıra, daha önce kodda kaydedilen SendMessageResult öğesini kullanarak ileti kimliğini ve pop alındı bilgisini iletin. İleti kimliği ve pop alındı bilgisi, güncellenmesi gereken iletiyi belirler.
System.out.println("\nUpdating the third message in the queue...");
// Update a message using the result that
// was saved when sending the message
queueClient.updateMessage(result.getMessageId(),
result.getPopReceipt(),
"Third message has been updated",
Duration.ofSeconds(1));
Kuyruğun uzunluğunu al
Kuyruktaki ileti sayısıyla ilgili bir tahmin alabilirsiniz.
yöntemi, getProperties şu anda kuyrukta olan iletilerin sayısı da dahil olmak üzere çeşitli değerler döndürür. İletiler isteğinizden sonra eklenebileceği veya kaldırılabildiği için sayı yaklaşıktır.
getApproximateMessageCount yöntemi, getProperties çağrısı tarafından alınan son değeri, Kuyruk Depolama'yı çağırmadan döndürür.
QueueProperties properties = queueClient.getProperties();
long messageCount = properties.getApproximateMessagesCount();
System.out.println(String.format("Queue length: %d", messageCount));
Kuyruktan ileti alma ve silme
yöntemini çağırarak receiveMessages daha önce eklenen iletileri indirin. Örnek kod ayrıca iletileri alındıktan ve işlendikten sonra kuyruktan siler. Bu durumda, işlem yalnızca konsolda iletiyi görüntüler.
Uygulama, iletileri alıp silmeden önce System.console().readLine(); işlevini çağırarak kullanıcı girişi için duraklatılır. Azure portalınızda kaynakların silinmeden önce doğru oluşturulduğunu doğrulayın. Açıkça silinmeyen tüm iletiler sonunda bunları işlemek için başka bir şans için kuyrukta yeniden görünür hale gelir.
Bu kodu yönteminin main sonuna ekleyin:
System.out.println("\nPress Enter key to receive messages and delete them from the queue...");
System.console().readLine();
// Get messages from the queue
queueClient.receiveMessages(10).forEach(
// "Process" the message
receivedMessage -> {
System.out.println("Message: " + receivedMessage.getMessageText());
// Let the service know we're finished with
// the message and it can be safely deleted.
queueClient.deleteMessage(receivedMessage.getMessageId(), receivedMessage.getPopReceipt());
}
);
receiveMessages yöntemini çağırırken, kuyruktan alınacak mesajların sayısını belirtmek için isteğe bağlı olarak maxMessages değerini belirtebilirsiniz. Varsayılan değer 1 iletidir ve en fazla 32 iletidir. Ayrıca, zaman aşımı dönemi için visibilityTimeoutdiğer işlemlerden gelen iletileri gizleyen bir değeri de belirtebilirsiniz. Varsayılan değer 30 saniyedir.
Bir kuyruğu sil
Aşağıdaki kod, Delete yöntemini kullanarak kuyruğu silmek suretiyle uygulamanın oluşturduğu kaynakları temizler.
Bu kodu yönteminin main sonuna ekleyin:
System.out.println("\nPress Enter key to delete the queue...");
System.console().readLine();
// Clean up
System.out.println("Deleting queue: " + queueClient.getQueueName());
queueClient.delete();
System.out.println("Done");
Kodu çalıştırma
Bu uygulama bir Azure kuyruğuna üç ileti oluşturur ve ekler. Kod, kuyruktaki iletileri listeler, ardından onları alır ve siler, en sonunda ise kuyruğu siler.
Konsol pencerenizde uygulama dizininize gidin, ardından uygulamayı derleyip çalıştırın.
mvn compile
Ardından paketi derleyin.
mvn package
Uygulamayı çalıştırmak için aşağıdaki mvn komutu kullanın.
mvn exec:java -Dexec.mainClass="com.queues.quickstart.App" -Dexec.cleanupDaemonThreads=false
Uygulamanın çıkışı aşağıdaki örneğe benzer:
Azure Queue Storage client library - Java quickstart sample
Adding messages to the queue...
Peek at the messages in the queue...
Message: First message
Message: Second message
Message: Third message
Updating the third message in the queue...
Press Enter key to receive messages and delete them from the queue...
Message: First message
Message: Second message
Message: Third message has been updated
Press Enter key to delete the queue...
Deleting queue: quickstartqueues-fbf58f33-4d5a-41ac-ac0e-1a05d01c7003
Done
Uygulama iletileri almadan önce duraklatıldığında Azure portalında depolama hesabınızı denetleyin. İletilerin kuyrukta olduğunu doğrulayın.
İletileri Enter almak ve silmek için tuşuna basın. İstendiğinde, kuyruğu silmek ve demoyu tamamlamak için Enter tuşuna yeniden basın.
Sonraki adımlar
Bu hızlı başlangıçta, Java kodunu kullanarak kuyruk oluşturmayı ve buna ileti eklemeyi öğrendiniz. Ardından iletileri göz atıp almayı ve silmeyi öğrendiniz. Son olarak, ileti kuyruğu silmeyi öğrendinsiniz.
Öğreticiler, örnekler, hızlı başlangıçlar ve diğer belgeler için şu adresi ziyaret edin:
- Kullanım dışı bırakılan Java sürüm 8 SDK'larını kullanan ilgili kod örnekleri için bkz . Java sürüm 8'i kullanan kod örnekleri.
- Diğer Azure Kuyruk Depolama örnek uygulamaları için bkz. Java için Azure Kuyruk Depolama istemci kitaplığı - örnekler.