Hızlı Başlangıç: .NET için Azure Kuyruk Depolama istemci kitaplığı

.NET 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 | Paketi (NuGet)Örnekleri |

.NET 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
  • Kuyruk uzunluğu alma
  • Kuyruktan ileti alma
  • Kuyruktan iletileri silme
  • Bir kuyruk silme

Ön koşullar

Ayarlama

Bu bölüm, .NET için Azure Kuyruk Depolama istemci kitaplığıyla çalışacak bir proje hazırlama işleminde size yol gösterir.

Proje oluşturma

adlı QueuesQuickstartbir .NET uygulaması oluşturun.

  1. Bir konsol penceresinde (cmd, PowerShell veya Bash gibi), adlı QueuesQuickstartyeni bir konsol uygulaması oluşturmak için komutunu kullanındotnet new. Bu komut, Program.cs adlı tek bir kaynak dosyasıyla basit bir "merhaba dünya" C# projesi oluşturur.

    dotnet new console -n QueuesQuickstart
    
  2. Yeni oluşturulan QueuesQuickstart dizine geçin.

    cd QueuesQuickstart
    

Paketleri yükleme

Uygulama dizinindeyken komutunu kullanarak .NET paketi için Azure Kuyruk Depolama istemci kitaplığını dotnet add package yükleyin.

dotnet add package Azure.Storage.Queues

Azure hizmetlerine parolasız bağlantılar için Azure Identity istemci kitaplığı paketi de gereklidir.

dotnet add package Azure.Identity

Uygulama çerçevesini ayarlama

  1. Projeyi kendi seçtiğiniz düzenleyicide açın
  2. Program.cs dosyasını açma
  3. Mevcut kodu aşağıdakilerle eşleşecek şekilde güncelleştirin:
using Azure;
using Azure.Identity;
using Azure.Storage.Queues;
using Azure.Storage.Queues.Models;
using System;
using System.Threading.Tasks;

Console.WriteLine("Azure Queue Storage client library - .NET quickstart sample");

// 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 dizileri güvenli olmayan 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 , .NET için Azure Identity istemci kitaplığı tarafından sağlanan bir sınıftır. hakkında DefaultAzureCredentialdaha fazla bilgi edinmek için bkz . DefaultAzureCredential genel bakışı. 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ştirme yaparken Visual Studio 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 Kuyruk Verileri Katkıda Bulunanı gerekir. Kendinize bu rolü atamak için Kullanıcı Erişimi Yönetici istrator 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 Kuyruk 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.

  1. Azure portalında ana arama çubuğunu veya sol gezintiyi kullanarak depolama hesabınızı bulun.

  2. Depolama hesabına genel bakış sayfasında sol taraftaki menüden Erişim denetimi (IAM) öğesini seçin.

  3. Erişim denetimi (IAM) sayfasında Rol atamaları sekmesini seçin.

  4. Üst menüden + Ekle'yi seçin ve ardından açılan menüden Rol ataması ekle'yi seçin.

A screenshot showing how to assign a role.

  1. Sonuçları istenen role göre filtrelemek için arama kutusunu kullanın. Bu örnek için Depolama Kuyruk Verileri Katkıda Bulunanı'nı arayın ve eşleşen sonucu seçin ve ardından İleri'yi seçin.

  2. Erişim ata'nın altında Kullanıcı, grup veya hizmet sorumlusu'na tıklayın ve ardından + Üye seç'e tıklayın.

  3. İ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.

  4. Son sayfaya gitmek için Gözden geçir + ata'yı seçin ve ardından işlemi tamamlamak için Gözden geçir + yeniden ata'yı 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 zaman uyumsuz olarak işlenmek üzere bir iş kapsamı oluşturmak için kullanılır. Kuyruk Depolama üç tür kaynak sunar:

  • Depolama hesabı: Azure Depolama tüm erişimi bir depolama hesabı üzerinden yapılır. Depolama hesapları hakkında daha fazla bilgi için bkz. Depolama hesaba 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 üzeri için maksimum yaşam süresi herhangi bir pozitif sayı veya iletinin süresinin dolmadığını belirten -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.

Diagram of Queue storage architecture

Bu kaynaklarla etkileşime geçmek için aşağıdaki .NET sınıflarını kullanın:

  • QueueServiceClient: depolama QueueServiceClient hesabınızdaki tüm kuyrukları yönetmenize olanak tanır.
  • QueueClient: sınıfı, QueueClient tek bir kuyruğu ve iletilerini yönetmenize ve işlemenize olanak tanır.
  • QueueMessage: sınıfı, QueueMessage bir kuyrukta çağrılırken ReceiveMessages döndürülen tek tek nesneleri temsil eder.

Kod örnekleri

Bu örnek kod parçacıkları, .NET için Azure Kuyruk Depolama istemci kitaplığıyla aşağıdaki eylemlerin nasıl gerçekleştirileceğini gösterir:

Erişimi yetkilendirme ve istemci nesnesi oluşturma

Yerel geliştirme için, rolü atadığınız Microsoft Entra hesabıyla kimliğinizin doğrulanmış olduğundan emin olun. Azure CLI veya Azure PowerShell gibi popüler geliştirme araçlarıyla kimlik doğrulaması yapabilirsiniz. Kimlik doğrulaması yapabileceğiniz geliştirme araçları farklı dillerde farklılık gösterir.

Aşağıdaki komutu kullanarak Azure CLI aracılığıyla Azure'da oturum açın:

az login

Kimlik doğrulamasından geçtikten sonra, kullanarak depolama hesabındaki kuyruk verilerine erişmek için kullanarak bir QueueClient nesne DefaultAzureCredential oluşturabilir ve yetkilendirme yapabilirsiniz. DefaultAzureCredential önceki adımda oturum açtığınız hesabı otomatik olarak bulur ve kullanır.

kullanarak DefaultAzureCredentialyetkilendirmek için, Paketleri yükleme bölümünde açıklandığı gibi Azure.Identity paketini eklediğinizden emin olun. Ayrıca, Program.cs dosyasında ad alanı için Azure.Identity bir using yönergesi eklediğinizden emin olun:

using Azure.Identity;

Ardından, kuyruk için bir ad belirleyin ve yetkilendirme için kullanarak DefaultAzureCredential sınıfın QueueClient 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. Daha fazla bilgi için bkz . Kuyrukları ve meta verileri adlandırma.

Aşağıdaki kodu Program.cs dosyasının sonuna ekleyin. Yer tutucu değerini değiştirdiğinden <storage-account-name> emin olun:

// Create a unique name for the queue
// TODO: Replace the <storage-account-name> placeholder 
string queueName = "quickstartqueues-" + Guid.NewGuid().ToString();
string storageAccountName = "<storage-account-name>";

// Instantiate a QueueClient to create and interact with the queue
QueueClient queueClient = new QueueClient(
    new Uri($"https://{storageAccountName}.queue.core.windows.net/{queueName}"),
    new DefaultAzureCredential());

Dekont

sınıfı kullanılarak QueueClient gönderilen iletiler, UTF-8 kodlamalı bir XML isteğine dahil edilebilen bir biçimde olmalıdır. uyumlu olmayan iletileri işlemek için isteğe bağlı olarak MessageEncoding seçeneğini Base64 olarak ayarlayabilirsiniz.

Kuyruk oluştur

QueueClient nesnesini kullanarak, depolama hesabınızda kuyruk oluşturmak için yöntemini çağırınCreateAsync.

Bu kodu Program.cs yönteminin sonuna ekleyin:

Console.WriteLine($"Creating queue: {queueName}");

// Create the queue
await queueClient.CreateAsync();

Kuyruğa ileti ekleme

Aşağıdaki kod parçacığı, yöntemini çağırarak SendMessageAsync iletileri zaman uyumsuz olarak kuyruğa ekler. Ayrıca, bir çağrıdan döndürülen bir SendMessageAsync kaydederSendReceipt. Alındı bilgisi, programın ilerleyen bölümlerinde iletiyi güncelleştirmek için kullanılır.

Bu kodu Program.cs dosyasının sonuna ekleyin:

Console.WriteLine("\nAdding messages to the queue...");

// Send several messages to the queue
await queueClient.SendMessageAsync("First message");
await queueClient.SendMessageAsync("Second message");

// Save the receipt so we can update this message later
SendReceipt receipt = await queueClient.SendMessageAsync("Third message");

Kuyruktaki iletilere göz atma

yöntemini çağırarak kuyruktaki iletilere PeekMessagesAsync göz atı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 Program.cs dosyasının sonuna ekleyin:

Console.WriteLine("\nPeek at the messages in the queue...");

// Peek at messages in the queue
PeekedMessage[] peekedMessages = await queueClient.PeekMessagesAsync(maxMessages: 10);

foreach (PeekedMessage peekedMessage in peekedMessages)
{
    // Display the message
    Console.WriteLine($"Message: {peekedMessage.MessageText}");
}

Kuyruktaki iletiyi güncelleştirme

yöntemini çağırarak iletinin içeriğini güncelleştirin UpdateMessageAsync . 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ğiyle birlikte, kodun daha önce kaydedilmiş olan değerlerini SendReceipt de geçirin. SendReceipt Değerler, hangi iletinin güncelleştirilecek olduğunu belirler.

Console.WriteLine("\nUpdating the third message in the queue...");

// Update a message using the saved receipt from sending the message
await queueClient.UpdateMessageAsync(receipt.MessageId, receipt.PopReceipt, "Third message has been updated");

Kuyruk uzunluğu alma

Bir kuyruktaki ileti sayısı ile ilgili bir tahmin alabilirsiniz. yöntemi, GetProperties ileti sayısı dahil olmak üzere kuyruk özelliklerini döndürür. özelliği, ApproximateMessagesCount kuyruktaki yaklaşık ileti sayısını içerir. Bu sayı kuyruktaki gerçek ileti sayısından düşük değildir, ancak daha yüksek olabilir.

Bu kodu Program.cs dosyasının sonuna ekleyin:

QueueProperties properties = queueClient.GetProperties();

// Retrieve the cached approximate message count
int cachedMessagesCount = properties.ApproximateMessagesCount;

// Display number of messages
Console.WriteLine($"Number of messages in queue: {cachedMessagesCount}");

Kuyruktan ileti alma

yöntemini çağırarak ReceiveMessagesAsync daha önce eklenen iletileri indirin.

Bu kodu Program.cs dosyasının sonuna ekleyin:

Console.WriteLine("\nReceiving messages from the queue...");

// Get messages from the queue
QueueMessage[] messages = await queueClient.ReceiveMessagesAsync(maxMessages: 10);

İsteğe bağlı olarak, kuyruktan alınacak ileti sayısı olan için maxMessagesbir değer 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.

Kuyruktan iletileri silme

İletiler işlendikten sonra kuyruktan silin. Bu durumda, işlem yalnızca konsolda iletiyi görüntüler.

Uygulama, iletileri işlemeden ve silmeden önce çağırarak Console.ReadLine 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 Program.cs dosyasının sonuna ekleyin:

Console.WriteLine("\nPress Enter key to 'process' messages and delete them from the queue...");
Console.ReadLine();

// Process and delete messages from the queue
foreach (QueueMessage message in messages)
{
    // "Process" the message
    Console.WriteLine($"Message: {message.MessageText}");

    // Let the service know we're finished with
    // the message and it can be safely deleted.
    await queueClient.DeleteMessageAsync(message.MessageId, message.PopReceipt);
}

Bir kuyruk silme

Aşağıdaki kod, yöntemini kullanarak DeleteAsync kuyruğu silerek uygulamanın oluşturduğu kaynakları temizler.

Bu kodu Program.cs dosyasının sonuna ekleyin:

Console.WriteLine("\nPress Enter key to delete the queue...");
Console.ReadLine();

// Clean up
Console.WriteLine($"Deleting queue: {queueClient.Name}");
await queueClient.DeleteAsync();

Console.WriteLine("Done");

Kodu çalıştırma

Bu uygulama bir Azure kuyruğuna üç ileti oluşturur ve ekler. Kod, kuyruktaki iletileri listeler, ardından kuyruğu silmeden önce alır ve siler.

Konsol pencerenizde uygulama dizininize gidin, ardından uygulamayı derleyip çalıştırın.

dotnet build
dotnet run

Uygulamanın çıkışı aşağıdaki örneğe benzer:

Azure Queue Storage client library - .NET quickstart sample

Creating queue: quickstartqueues-5c72da2c-30cc-4f09-b05c-a95d9da52af2

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...

Receiving messages from the queue...

Press Enter key to 'process' 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-5c72da2c-30cc-4f09-b05c-a95d9da52af2
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 Enter , kuyruğu silmek ve tanıtımı tamamlamak için tuşuna yeniden basın.

Sonraki adımlar

Bu hızlı başlangıçta, zaman uyumsuz .NET kodu kullanarak kuyruk oluşturmayı ve bu kuyruğa 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 .NET sürüm 11.x SDK'larını kullanan ilgili kod örnekleri için bkz . .NET sürüm 11.x kullanan kod örnekleri.
  • Daha fazla bilgi edinmek için bkz. .NET için Azure Depolama kitaplıkları.
  • Daha fazla Azure Kuyruk Depolama örnek uygulama için bkz. .NET örnekleri için Azure Kuyruk Depolama istemci kitaplığı.
  • .NET Core hakkında daha fazla bilgi için bkz. 10 dakika içinde .NET kullanmaya başlama.