Azure Kuyruk Depolama ve Visual Studio’ya bağlı hizmetleri kullanmaya başlama (bulut hizmeti projeleri)
İpucu
Microsoft Azure Depolama Gezgini’ni deneyin
Microsoft Azure Depolama Gezgini, Microsoft’un Windows, macOS ve Linux üzerinde Azure Depolama verileriyle görsel olarak çalışmanızı sağlayan ücretsiz ve tek başına uygulamasıdır.
Genel Bakış
Önemli
Cloud Services (klasik) artık yeni müşteriler için kullanımdan kaldırılmıştır ve tüm müşteriler için 31 Ağustos 2024'te kullanımdan kaldırılacaktır. Yeni dağıtımlarda yeni Azure Resource Manager tabanlı dağıtım modeli Azure Cloud Services (genişletilmiş destek) kullanılmalıdır.
Bu makalede, Visual Studio Bağlı Hizmetler Ekle iletişim kutusunu kullanarak bir bulut hizmetleri projesinde Azure depolama hesabı oluşturduktan veya bu hesaba başvurdıktan sonra Visual Studio'da Azure Kuyruk depolamayı kullanmaya nasıl başlandığı açıklanır.
Kodda kuyruk oluşturmayı göstereceğiz. Ayrıca kuyruk iletilerini ekleme, değiştirme, okuma ve kaldırma gibi temel kuyruk işlemlerinin nasıl gerçekleştirileceğini de göstereceğiz. Örnekler C# koduyla yazılır ve .NET için Microsoft Azure Depolama İstemci Kitaplığı'nı kullanır.
Bağlı Hizmetler Ekle işlemi, projenizdeki Azure depolamaya erişmek için uygun NuGet paketlerini yükler ve depolama hesabının bağlantı dizesini proje yapılandırma dosyalarınıza ekler.
- Koddaki kuyrukları düzenleme hakkında daha fazla bilgi için bkz. .NET kullanarak Azure Kuyruk depolamayı kullanmaya başlama .
- Azure Depolama hakkında genel bilgiler için depolama belgelerine bakın.
- Azure bulut hizmetleri hakkında genel bilgi için Cloud Services belgelerine bakın.
- ASP.NET uygulamaları programlama hakkında daha fazla bilgi için bkz. ASP.NET.
Azure Kuyruk depolama, HTTP veya HTTPS kullanan kimlik doğrulaması yapılmış çağrılar aracılığıyla dünyanın her yerinden erişilebilen çok sayıda iletinin depolanması için bir hizmettir. Tek bir kuyruk iletisinin boyutu 64 KB’ye kadar olabilir ve bir kuyrukta, depolama hesabının toplam kapasite sınırına kadar milyonlarca ileti bulunabilir.
Koddaki kuyruklara erişme
Visual Studio Cloud Services projelerindeki kuyruklara erişmek için Aşağıdaki öğeleri Azure Kuyruk depolamaya erişen herhangi bir C# kaynak dosyasına eklemeniz gerekir.
C# dosyasının en üstündeki ad alanı bildirimlerinin bunları using deyimleri içerdiğinden emin olun.
using Microsoft.Framework.Configuration; using Microsoft.WindowsAzure.Storage; using Microsoft.WindowsAzure.Storage.Queue;
Depolama hesabı bilgilerinizi temsil eden bir CloudStorageAccount nesnesi alın. Azure hizmet yapılandırmasından depolama bağlantı dizenizi ve depolama hesabı bilgilerinizi almak için aşağıdaki kodu kullanın.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse( CloudConfigurationManager.GetSetting("<storage-account-name>_AzureStorageConnectionString"));
Depolama hesabınızdaki kuyruk nesnelerine başvurmak için bir CloudQueueClient nesnesi alın.
// Create the queue client. CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
Belirli bir kuyruğa başvurmak için bir CloudQueue nesnesi alın.
// Get a reference to a queue named "messageQueue" CloudQueue messageQueue = queueClient.GetQueueReference("messageQueue");
NOT: Aşağıdaki örneklerde kodun önünde yukarıdaki kodun tümünü kullanın.
Kodda kuyruk oluşturma
Kodda kuyruk oluşturmak için CreateIfNotExists öğesine bir çağrı eklemeniz gerekir.
// Create the CloudQueue if it does not exist
messageQueue.CreateIfNotExists();
Kuyruğa ileti ekleme
Var olan kuyruğa ileti eklemek için yeni bir CloudQueueMessage nesnesi oluşturun ve AddMessage yöntemini çağırın.
CloudQueueMessage nesnesi bir dizeden (UTF-8 biçiminde) veya bayt dizisinden oluşturulabilir.
'Hello, World' iletisini ekleyen bir örnek aşağıda verilmiştir.
// Create a message and add it to the queue.
CloudQueueMessage message = new CloudQueueMessage("Hello, World");
messageQueue.AddMessage(message);
Kuyruktaki iletiyi okuma
PeekMessage yöntemini çağırarak iletiyi kuyruktan kaldırmadan kuyruğun önündeki iletiye göz atabilirsiniz.
// Peek at the next message
CloudQueueMessage peekedMessage = messageQueue.PeekMessage();
Kuyruktaki iletiyi okuma ve kaldırma
Kodunuz iki adımda bir iletiyi kuyruktan kaldırabilir (kuyruğu kaldırabilir).
- Kuyruktaki bir sonraki iletiyi almak için GetMessage'ı çağırın. GetMessage’dan dönen bir ileti bu kuyruktaki kod okuyan iletilere karşı görünmez olur. Varsayılan olarak bu ileti 30 saniye görünmez kalır.
- İletiyi kuyruktan kaldırmayı tamamlamak için DeleteMessage'ı çağırın.
Bir iletinin iki adımlı kaldırılma süreci, donanım veya yazılım arızasından dolayı kodunuzun bir iletiyi işleyememesi durumunda kodunuzun başka bir örneğinin aynı iletiyi alıp yeniden denemesini sağlar. Aşağıdaki kod, ileti işlendikten hemen sonra DeleteMessage'i çağırır.
// Get the next message in the queue.
CloudQueueMessage retrievedMessage = messageQueue.GetMessage();
// Process the message in less than 30 seconds
// Then delete the message.
await messageQueue.DeleteMessage(retrievedMessage);
Kuyruk iletilerini işlemek ve kaldırmak için ek seçenekleri kullanma
İletilerin bir kuyruktan alınma şeklini iki yöntemle özelleştirebilirsiniz.
- Bir grup ileti alabilirsiniz (en fazla 32).
- Kodunuzun her iletiyi tam olarak işlemesine daha fazla veya daha az zaman tanıyarak daha uzun veya daha kısa bir görünmezlik zaman aşımı ayarlayabilirsiniz. Aşağıdaki kod örneğinde tek çağrıda 20 ileti almak için GetMessages yöntemi kullanılmıştır. Ardından her ileti bir foreach döngüsü ile işlenir. Ayrıca her ileti için görünmezlik zaman aşımı beş dakika olarak ayarlanır. 5 dakikalık sürenin tüm iletiler için aynı zamanda başladığını unutmayın, bu nedenle GetMessages çağrısından itibaren 5 dakika geçtikten sonra silinmeyen tüm iletiler görünür olacaktır.
Aşağıda bir örnek verilmiştir:
foreach (CloudQueueMessage message in messageQueue.GetMessages(20, TimeSpan.FromMinutes(5)))
{
// Process all messages in less than 5 minutes, deleting each message after processing.
// Then delete the message after processing
messageQueue.DeleteMessage(message);
}
Kuyruk uzunluğu alma
Bir kuyruktaki ileti sayısı ile ilgili bir tahmin alabilirsiniz. FetchAttributes yöntemi, ileti sayısı dahil olmak üzere Kuyruk hizmetinden kuyruk özniteliklerini almasını ister. ApproximateMethodCount özelliği, Queue hizmetini çağırmadan FetchAttributes yöntemi tarafından alınan son değeri döndürür.
// Fetch the queue attributes.
messageQueue.FetchAttributes();
// Retrieve the cached approximate message count.
int? cachedMessageCount = messageQueue.ApproximateMessageCount;
// Display number of messages.
Console.WriteLine("Number of messages in queue: " + cachedMessageCount);
Yaygın Azure Kuyruk API'leriyle Async-Await Desenini kullanma
Bu örnekte yaygın Azure Kuyruk API'leriyle Async-Await düzeninin nasıl kullanılacağı gösterilmektedir. Örnek, verilen yöntemlerin her birinin zaman uyumsuz sürümünü çağırır. Bu, her yöntemin zaman uyumsuz düzeltmesi tarafından görülebilir. Zaman uyumsuz yöntem kullanıldığında, async-await düzeni çağrı tamamlanana kadar yerel yürütmeyi askıya alır. Bu davranış, geçerli iş parçacığının performans sorunlarını önlemeye yardımcı olan ve uygulamanızın genel yanıt hızını artıran başka işler yapmasına olanak tanır. .NET’te Zaman Uyumsuz-Bekleme yönteminin kullanılması ile ilgili daha fazla ayrıntı için bkz. Zaman Uyumsuz ve Bekleme (C# ve Visual Basic).
// Create a message to put in the queue
CloudQueueMessage cloudQueueMessage = new CloudQueueMessage("My message");
// Add the message asynchronously
await messageQueue.AddMessageAsync(cloudQueueMessage);
Console.WriteLine("Message added");
// Async dequeue the message
CloudQueueMessage retrievedMessage = await messageQueue.GetMessageAsync();
Console.WriteLine("Retrieved message with content '{0}'", retrievedMessage.AsString);
// Delete the message asynchronously
await messageQueue.DeleteMessageAsync(retrievedMessage);
Console.WriteLine("Deleted message");
Bir kuyruk silme
Bir kuyruğu ve içinde yer alan tüm iletileri silmek için kuyruk nesnesindeki Sil yöntemini çağırın.
// Delete the queue.
messageQueue.Delete();
Sonraki adımlar
Azure kuyruk depolamanın temellerini öğrendiğinize göre, daha karmaşık depolama görevleri hakkında bilgi edinmek için bu bağlantıları izleyin.
- Kullanılabilir API'ler hakkındaki tüm ayrıntılar için .NET başvurusu için Azure Depolama İstemci Kitaplığı'nda Kuyruk hizmeti başvuru belgelerini görüntüleyin.
- .NET kullanarak Azure Kuyruk depolamayı kullanmaya başlama bölümünde Kuyruk depolamayı kullanma hakkında daha fazla bilgi edinin
- Azure Depolama ile çalışmak üzere yazdığınız kodu basitleştirmeyi öğrenmek için Bkz. Azure Web İşleri SDK'sı nedir?
- Azure’da veri depolama ile ilgili ek seçenekler hakkında daha fazla bilgi edinmek için daha fazla özellik kılavuzu görüntüleyin.
- Azure Depolama Tablolarıyla çalışmak için bkz. .NET kullanarak Azure Tablo depolama ile çalışmaya başlama.
- Azure Depolama Blobları ile çalışmak için .NET kullanarak Azure Blob depolamayı kullanmaya başlayın.
- İlişkisel verileri depolamak için bkz. .NET (C#) kullanarak SQL Veritabanı bağlanma.