.NET sürüm 11.x istemci kitaplıklarını kullanan Azure Kuyruk Depolama kod örnekleri
Bu makalede.NET için Azure Kuyruk Depolama istemci kitaplığının 11.x sürümünü kullanan kod örnekleri gösterilmektedir.
31 Mart 2023'te , geçerli Azure SDK yönergelerine uymayan Azure SDK kitaplıkları desteğini kullanımdan kaldırdık. Yeni Azure SDK kitaplıkları, tutarlı deneyimler sağlamak ve güvenlik duruşunuzu güçlendirmek için düzenli olarak güncelleştirilir. Yeni özelliklerden ve kritik güvenlik güncelleştirmelerinden yararlanmak için yeni Azure SDK kitaplıklarına geçmeniz önerilir.
Eski kitaplıklar 31 Mart 2023'ten sonra da kullanılabilse de artık Microsoft'tan resmi destek ve güncelleştirme almayacaktır. Daha fazla bilgi için bkz. destek kullanımdan kaldırma duyurusu.
En son 12.x istemci kitaplığı sürümünü kullanan kod örnekleri için bkz . Hızlı Başlangıç: .NET için Azure Kuyruk Depolama istemci kitaplığı.
Kuyruk Depolama istemcisi oluşturma
sınıfı, CloudQueueClient
Kuyruk Depolama'da depolanan kuyrukları almanızı sağlar. Hizmet istemcisini oluşturma yöntemlerinden biri aşağıda verilmiştir:
// Retrieve storage account from connection string
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
CloudConfigurationManager.GetSetting("StorageConnectionString"));
// Create the queue client
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
Bir kuyruk oluşturma
Bu örnekte kuyruk oluşturma gösterilmektedir:
// Retrieve storage account from connection string
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
CloudConfigurationManager.GetSetting("StorageConnectionString"));
// Create the queue client
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
// Retrieve a reference to a queue
CloudQueue queue = queueClient.GetQueueReference("myqueue");
// Create the queue if it doesn't already exist
queue.CreateIfNotExists();
Kuyruğa bir ileti yerleştirme
Var olan kuyruğa ileti eklemek için önce yeni CloudQueueMessage
bir oluşturun. Ardından yöntemini çağırın AddMessage
. bir CloudQueueMessage
dizeden (UTF-8 biçiminde) veya bayt dizisinden oluşturulabilir. Aşağıdaki kod örneği bir kuyruk oluşturur (henüz yoksa) ve iletisini Hello, World
ekler:
// Retrieve storage account from connection string
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
CloudConfigurationManager.GetSetting("StorageConnectionString"));
// Create the queue client
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
// Retrieve a reference to a queue
CloudQueue queue = queueClient.GetQueueReference("myqueue");
// Create the queue if it doesn't already exist
queue.CreateIfNotExists();
// Create a message and add it to the queue
CloudQueueMessage message = new CloudQueueMessage("Hello, World");
queue.AddMessage(message);
Sonraki iletiye gözatın
yöntemini çağırarak kuyruktan kaldırmadan kuyruğun önündeki iletiye PeekMessage
göz atabilirsiniz.
// Retrieve storage account from connection string
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
CloudConfigurationManager.GetSetting("StorageConnectionString"));
// Create the queue client
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
// Retrieve a reference to a queue
CloudQueue queue = queueClient.GetQueueReference("myqueue");
// Peek at the next message
CloudQueueMessage peekedMessage = queue.PeekMessage();
// Display message.
Console.WriteLine(peekedMessage.AsString);
Kuyruğa alınan iletinin içeriğini değiştirme
// Retrieve storage account from connection string.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
CloudConfigurationManager.GetSetting("StorageConnectionString"));
// Create the queue client.
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
// Retrieve a reference to a queue.
CloudQueue queue = queueClient.GetQueueReference("myqueue");
// Get the message from the queue and update the message contents.
CloudQueueMessage message = queue.GetMessage();
message.SetMessageContent2("Updated contents.", false);
queue.UpdateMessage(message,
TimeSpan.FromSeconds(60.0), // Make it invisible for another 60 seconds.
MessageUpdateFields.Content | MessageUpdateFields.Visibility);
Sonraki iletiyi dequeue etme
Kodunuz iki adımda kuyruktaki bir iletiyi sıralar. çağrısı GetMessage
yaptığınızda kuyruktaki bir sonraki iletiyi alırsınız. tarafından GetMessage
döndürülen bir ileti, bu kuyruktan gelen iletileri okuyan diğer kodlar için görünmez hale gelir. Varsayılan olarak bu ileti 30 saniye görünmez kalır. kuyruktan iletiyi kaldırmayı tamamlamak için çağrısı da DeleteMessage
gerekir. 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. kodunuz, ileti işlendikten hemen sonra çağrır DeleteMessage
.
// Retrieve storage account from connection string
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
CloudConfigurationManager.GetSetting("StorageConnectionString"));
// Create the queue client
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
// Retrieve a reference to a queue
CloudQueue queue = queueClient.GetQueueReference("myqueue");
// Get the next message
CloudQueueMessage retrievedMessage = queue.GetMessage();
//Process the message in less than 30 seconds, and then delete the message
queue.DeleteMessage(retrievedMessage);
Ortak Kuyruk Depolama API'leriyle async-await desenini kullanma
// Create the queue if it doesn't already exist
if(await queue.CreateIfNotExistsAsync())
{
Console.WriteLine("Queue '{0}' Created", queue.Name);
}
else
{
Console.WriteLine("Queue '{0}' Exists", queue.Name);
}
// Create a message to put in the queue
CloudQueueMessage cloudQueueMessage = new CloudQueueMessage("My message");
// Async enqueue the message
await queue.AddMessageAsync(cloudQueueMessage);
Console.WriteLine("Message added");
// Async dequeue the message
CloudQueueMessage retrievedMessage = await queue.GetMessageAsync();
Console.WriteLine("Retrieved message with content '{0}'", retrievedMessage.AsString);
// Async delete the message
await queue.DeleteMessageAsync(retrievedMessage);
Console.WriteLine("Deleted message");
İletileri sıralamak için ek seçenekleri kullanma
Aşağıdaki kod örneği, tek bir çağrıda GetMessages
20 ileti almak için yöntemini kullanır. Ardından her iletiyi bir foreach
döngü kullanarak işler. Ayrıca her ileti için görünmezlik zaman aşımı beş dakika olarak ayarlanır. Zaman aşımı tüm iletiler için aynı anda başlar, dolayısıyla çağrısının GetMessages
üzerinden beş dakika geçtikten sonra silinmemiş tüm iletiler yeniden görünür hale gelir.
// Retrieve storage account from connection string.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
CloudConfigurationManager.GetSetting("StorageConnectionString"));
// Create the queue client.
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
// Retrieve a reference to a queue.
CloudQueue queue = queueClient.GetQueueReference("myqueue");
foreach (CloudQueueMessage message in queue.GetMessages(20, TimeSpan.FromMinutes(5)))
{
// Process all messages in less than 5 minutes, deleting each message after processing.
queue.DeleteMessage(message);
}
Kuyruk uzunluğu alma
Bir kuyruktaki ileti sayısı ile ilgili bir tahmin alabilirsiniz. yöntemi, FetchAttributes
ileti sayısı da dahil olmak üzere kuyruk özniteliklerini döndürür. ApproximateMessageCount
özelliği, Kuyruk Depolama'yı FetchAttributes
çağırmadan yöntemi tarafından alınan son değeri döndürür.
// Retrieve storage account from connection string.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
CloudConfigurationManager.GetSetting("StorageConnectionString"));
// Create the queue client.
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
// Retrieve a reference to a queue.
CloudQueue queue = queueClient.GetQueueReference("myqueue");
// Fetch the queue attributes.
queue.FetchAttributes();
// Retrieve the cached approximate message count.
int cachedMessageCount = queue.ApproximateMessageCount;
// Display number of messages.
Console.WriteLine("Number of messages in queue: " + cachedMessageCount);
Bir kuyruk silme
Bir kuyruğu ve içindeki tüm iletileri silmek için kuyruk nesnesinde yöntemini çağırın Delete
.
// Retrieve storage account from connection string.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
CloudConfigurationManager.GetSetting("StorageConnectionString"));
// Create the queue client.
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
// Retrieve a reference to a queue.
CloudQueue queue = queueClient.GetQueueReference("myqueue");
// Delete the queue.
queue.Delete();
Kuyruklarla çalışma
İlgili makale: .NET'te Azure Kuyruk Depolama kuyruklarıyla çalışma
Proje dizininize komutunu kullanarak dotnet add package
aşağıdaki paketleri ekleyin:
dotnet add package Microsoft.Azure.Storage.Common
dotnet add package Microsoft.Azure.Storage.Queue
Tam kod örneği:
using System;
using System.Threading.Tasks;
using Microsoft.Azure.Storage;
using Microsoft.Azure.Storage.Queue;
namespace QueueApp
{
class Program
{
static async Task Main(string[] args)
{
string connectionString = Environment.GetEnvironmentVariable("AZURE_STORAGE_CONNECTION_STRING");
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString);
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
CloudQueue queue = queueClient.GetQueueReference("mystoragequeue");
if (args.Length > 0)
{
string value = String.Join(" ", args);
await InsertMessageAsync(queue, value);
Console.WriteLine($"Sent: {value}");
}
else
{
string value = await RetrieveNextMessageAsync(queue);
Console.WriteLine($"Received: {value}");
}
Console.Write("Press Enter...");
Console.ReadLine();
}
static async Task InsertMessageAsync(CloudQueue theQueue, string newMessage)
{
if (await theQueue.CreateIfNotExistsAsync())
{
Console.WriteLine("The queue was created.");
}
CloudQueueMessage message = new CloudQueueMessage(newMessage);
await theQueue.AddMessageAsync(message);
}
static async Task<string> RetrieveNextMessageAsync(CloudQueue theQueue)
{
bool exists = await theQueue.ExistsAsync();
if (exists)
{
CloudQueueMessage retrievedMessage = await theQueue.GetMessageAsync();
if (retrievedMessage != null)
{
string theMessage = retrievedMessage.AsString;
await theQueue.DeleteMessageAsync(retrievedMessage);
return theMessage;
}
else
{
Console.Write("The queue is empty. Attempt to delete it? (Y/N) ");
string response = Console.ReadLine();
if (response.ToUpper() == "Y")
{
await theQueue.DeleteIfExistsAsync();
return "The queue was deleted.";
}
else
{
return "The queue was not deleted.";
}
}
}
else
{
return "The queue does not exist. Add a message to the command line to create the queue and store the message.";
}
}
}
}
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin