Sdílet prostřednictvím


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.

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.

  1. 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;
    
  2. 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"));
    
  3. Získejte objekt CloudQueueClient , který odkazuje na objekty fronty ve vašem účtu úložiště.

    // Create the queue client.
    CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
    
  4. 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.

  1. 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.
  2. 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ě.