Začínáme s Azure Queue Storage a připojenými službami sady Visual Studio (projekty cloudových služeb)
Tip
Vyzkoušení Microsoft Azure Storage Exploreru
Microsoft Azure Storage Explorer je bezplatná samostatná aplikace od Microsoftu, která umožňuje vizuálně pracovat s daty Azure Storage ve Windows, macOS a Linuxu.
Přehled
Důležité
Cloud Services (classic) je teď pro nové zákazníky zastaralé a pro všechny zákazníky bude vyřazeno 31. srpna 2024. Nová nasazení by měla používat nový model nasazení založený na Azure Resource Manager Azure Cloud Services (rozšířená podpora).
Tento článek popisuje, jak začít používat službu Azure Queue Storage v sadě Visual Studio po vytvoření nebo odkazování na účet úložiště Azure v projektu cloudových služeb pomocí dialogového okna Přidat připojené služby sady Visual Studio.
Ukážeme vám, jak vytvořit frontu v kódu. Ukážeme vám také, jak provádět základní operace fronty, jako je přidávání, úpravy, čtení a odebírání zpráv fronty. Ukázky jsou napsané v kódu jazyka C# a používají klientskou knihovnu Microsoft Azure Storage pro .NET.
Operace Přidat připojené služby nainstaluje příslušné balíčky NuGet pro přístup k úložišti Azure v projektu a přidá připojovací řetězec pro účet úložiště do konfiguračních souborů projektu.
- Další informace o manipulaci s frontami v kódu najdete v tématu Začínáme se službou Azure Queue Storage pomocí .NET .
- Obecné informace o službě Azure Storage najdete v dokumentaci k úložišti .
- Obecné informace o cloudových službách Azure najdete v dokumentaci k Cloud Services.
- Další informace o programování ASP.NET aplikacích najdete v ASP.NET .
Azure Queue Storage je služba pro ukládání velkého počtu zpráv, ke které můžete získat přístup z jakéhokoli místa na světě prostřednictvím ověřených volání s využitím protokolu HTTP nebo HTTPS. Zpráva s jednou frontou může mít velikost až 64 kB a jedna fronta můžete obsahovat miliony zpráv, až do dosažení celkové kapacity účtu úložiště.
Přístup k frontám v kódu
Pokud chcete získat přístup k frontám v projektech sady Visual Studio Cloud Services, musíte do libovolného zdrojového souboru jazyka C#, který přistupuje ke službě Azure Queue Storage, zahrnout následující položky.
Ujistěte se, že deklarace oboru názvů v horní části souboru C# obsahují tyto příkazy using .
using Microsoft.Framework.Configuration; using Microsoft.WindowsAzure.Storage; using Microsoft.WindowsAzure.Storage.Queue;
Získejte objekt CloudStorageAccount , který představuje informace o vašem účtu úložiště. Pomocí následujícího kódu získejte informace o připojovacím řetězci úložiště a účtu úložiště z konfigurace služby Azure.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse( CloudConfigurationManager.GetSetting("<storage-account-name>_AzureStorageConnectionString"));
Získejte objekt CloudQueueClient , který odkazuje na objekty fronty ve vašem účtu úložiště.
// Create the queue client. CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
Získejte objekt CloudQueue , který odkazuje na konkrétní frontu.
// Get a reference to a queue named "messageQueue" CloudQueue messageQueue = queueClient.GetQueueReference("messageQueue");
POZNÁMKA: Před kódem použijte všechny výše uvedené kódy v následujících ukázkách.
Vytvoření fronty v kódu
Pokud chcete vytvořit frontu v kódu, stačí přidat volání createIfNotExists.
// Create the CloudQueue if it does not exist
messageQueue.CreateIfNotExists();
Přidání zprávy do fronty
Pokud chcete vložit zprávu do existující fronty, vytvořte nový objekt CloudQueueMessage a pak volejte metodu AddMessage .
Objekt CloudQueueMessage lze vytvořit z řetězce (ve formátu UTF-8) nebo bajtového pole.
Tady je příklad, který vloží zprávu Hello, World.
// Create a message and add it to the queue.
CloudQueueMessage message = new CloudQueueMessage("Hello, World");
messageQueue.AddMessage(message);
Čtení zprávy ve frontě
Pomocí volání metody PeekMessage můžete prohlížet zprávy ve frontě, aniž byste je z fronty odebrali.
// Peek at the next message
CloudQueueMessage peekedMessage = messageQueue.PeekMessage();
Čtení a odebrání zprávy ve frontě
Kód může ze fronty odebrat zprávu (de-queue) ve dvou krocích.
- Zavolejte GetMessage , abyste získali další zprávu ve frontě. Zpráva vrácená metodou GetMessage se stane neviditelnou pro jakýkoli jiný kód, který čte zprávy z této fronty. Ve výchozím nastavení tato zpráva zůstává neviditelná po dobu 30 sekund.
- Chcete-li dokončit odebrání zprávy z fronty, zavolejte DeleteMessage.
Tento dvoukrokový proces odebrání zprávy zaručuje, aby v případě, že se vašemu kódu nepodaří zprávu zpracovat z důvodu selhání hardwaru nebo softwaru, mohla stejnou zprávu získat jiná instance vašeho kódu a bylo možné to zkusit znovu. Následující kód volá DeleteMessage hned po zpracování zprávy.
// 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);
Zpracování a odebrání zpráv fronty pomocí dalších možností
Načítání zpráv z fronty si můžete přizpůsobit dvěma způsoby.
- Můžete získat dávku zpráv (až 32).
- Můžete nastavit delší nebo kratší časový limit nečinnosti, což umožňuje, aby kód mohl plně zpracovat každou zprávu. V následujícím příkladu kódu se pomocí metody GetMessages získá 20 zpráv v jednom volání. Následně se každá zpráva zpracuje pomocí smyčky foreach. Také se pro každou zprávu nastaví časový limit neviditelnosti 5 minut. Pozor, 5minutový časový limit začíná pro všechny zprávy najednou, takže po uplynutí 5 minut od volání metody GetMessages pak budou všechny zprávy, které nebyly odstraněny, opět viditelné.
Tady je příklad:
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);
}
Získání délky fronty
Podle potřeby můžete získat odhadovaný počet zpráv ve frontě. Metoda FetchAttributes požádá Službu front o načtení atributů fronty, včetně počtu zpráv. Vlastnost ApproximateMethodCount vrátí poslední hodnotu načtenou metodou FetchAttributes bez volání služby Queue.
// 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);
Použití modelu Async-Await s běžnými rozhraními API front Azure
Tento příklad ukazuje, jak používat vzor Async-Await s běžnými rozhraními API front Azure. Ukázka volá asynchronní verzi každé z uvedených metod, kterou lze zobrazit asynchronním post-fixem každé metody. Když se použije asynchronní metoda, model async-await pozastaví místní spuštění, dokud se volání dokončí. Toto chování umožňuje aktuálnímu vláknu provádět další práci, která pomáhá vyhnout se kritickým bodům výkonu a zlepšit celkovou odezvu vaší aplikace. Další podrobnosti o použití vzoru Async-Await v rozhraní .NET najdete v tématu Async a Await (C# a 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");
Odstranění fronty
Pokud budete chtít odstranit frontu se všemi zprávami, které v ní jsou, zavolejte metodu Delete pro objekt fronty.
// Delete the queue.
messageQueue.Delete();
Další kroky
Teď, když jste se naučili základy služby Azure Queue Storage, postupujte podle těchto odkazů a seznamte se s složitějšími úlohami úložiště.
- Podrobné informace o dostupných rozhraních API najdete v referenční dokumentaci ke službě Queue v klientské knihovně služby Azure Storage pro .NET .
- Další informace o používání služby Queue Storage v tématu Začínáme se službou Azure Queue Storage pomocí .NET
- Informace o zjednodušení kódu, který píšete pro práci se službou Azure Storage, najdete v tématu Co je sada Azure WebJobs SDK.
- Projděte si další průvodce funkcemi, kde najdete další informace o dalších možnostech pro ukládání dat v Azure.
- Pokud chcete pracovat s tabulkami Azure Storage, přečtěte si téma Začínáme se službou Azure Table Storage pomocí .NET.
- Pokud chcete pracovat s objekty blob služby Azure Storage, začněte se službou Azure Blob Storage pomocí .NET.
- Pokud chcete ukládat relační data, přečtěte si téma Připojení k SQL Database pomocí .NET (C#).