Použití Queue Storage z RubyHow to use Queue Storage from Ruby

Tip

Vyzkoušení Microsoft Azure Storage ExploreruTry the Microsoft Azure Storage Explorer

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.Microsoft Azure Storage Explorer is a free, standalone app from Microsoft that enables you to work visually with Azure Storage data on Windows, macOS, and Linux.

PřehledOverview

V této příručce se dozvíte, jak provádět běžné scénáře pomocí služby Microsoft Azure Queue Storage.This guide shows you how to perform common scenarios using the Microsoft Azure Queue Storage service. Ukázky se napíší pomocí rozhraní API Ruby Azure.The samples are written using the Ruby Azure API. Mezi zahrnuté scénáře patří vkládání, prohlížení, získávání a odstraňování zpráv fronty a vytváření a odstraňování front.The scenarios covered include inserting, peeking, getting, and deleting queue messages, as well as creating and deleting queues.

Co je Queue Storage?What is Queue storage?

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.Azure Queue storage is a service for storing large numbers of messages that can be accessed from anywhere in the world via authenticated calls using HTTP or 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ě.A single queue message can be up to 64 KB in size, and a queue can contain millions of messages, up to the total capacity limit of a storage account. Fronta úložiště se často používá k vytvoření nevyřízených položek pro asynchronní zpracování.Queue storage is often used to create a backlog of work to process asynchronously.

Služba front konceptyQueue service concepts

Služba front Azure obsahuje následující komponenty:The Azure Queue service contains the following components:

Součásti Azure Služba front

  • Účet úložiště: Veškerý přístup ke službě Azure Storage se provádí prostřednictvím účtu úložiště.Storage Account: All access to Azure Storage is done through a storage account. Další informace o účtech úložiště najdete v tématu Přehled účtu úložiště.For more information about storage accounts, see Storage account overview.

  • Fronta: Fronta obsahuje sadu zpráv.Queue: A queue contains a set of messages. Všechny zprávy musí být ve frontě.All messages must be in a queue. Upozorňujeme, že název fronty musí být psaný malými písmeny.Note that the queue name must be all lowercase. Informace o pojmenování front najdete v tématu Pojmenování front a metadata.For information on naming queues, see Naming Queues and Metadata.

  • Zpráva: Zprávu v libovolném formátu o velikosti až 64 kB.Message: A message, in any format, of up to 64 KB. Maximální doba, po kterou může zpráva zůstat ve frontě, je 7 dní.The maximum time that a message can remain in the queue is 7 days. V případě verze 2017-07-29 nebo novější může být maximální doba do živého kladného čísla nebo-1, což znamená, že platnost zprávy nevyprší.For version 2017-07-29 or later, the maximum time-to-live can be any positive number, or -1 indicating that the message doesn't expire. Pokud je tento parametr vynechán, výchozí hodnota TTL (Time to Live) je sedm dní.If this parameter is omitted, the default time-to-live is seven days.

  • Formát adresy URL: Fronty jsou adresovatelné v následujícím formátu adresy URL: http:// <storage account> . Queue.Core.Windows.NET/<queue>URL format: Queues are addressable using the following URL format: http://<storage account>.queue.core.windows.net/<queue>

    Následující adresa URL odkazuje na frontu v diagramu:The following URL addresses a queue in the diagram:

    http://myaccount.queue.core.windows.net/incoming-orders

Vytvoření účtu úložiště AzureCreate an Azure storage account

Nejjednodušší způsob, jak vytvořit první účet úložiště Azure, je pomocí Azure Portal.The easiest way to create your first Azure storage account is by using the Azure portal. Další informace najdete v tématu Vytvoření účtu úložiště.To learn more, see Create a storage account.

Účet úložiště Azure můžete vytvořit také pomocí prostředí Azure PowerShell, rozhraní příkazového řádku Azure nebo pomocí poskytovatele prostředků služby Azure Storage pro .NET.You can also create an Azure storage account by using Azure PowerShell, Azure CLI, or the Azure Storage Resource Provider for .NET.

Pokud nechcete v Azure v tuto chvíli vytvářet účet úložiště, můžete použít taky emulátor úložiště Azurite ke spuštění a testování kódu v místním prostředí.If you prefer not to create a storage account in Azure at this time, you can also use the Azurite storage emulator to run and test your code in a local environment. Další informace najdete v tématu použití emulátoru Azurite pro vývoj místních Azure Storage.For more information, see Use the Azurite emulator for local Azure Storage development.

Vytvoření aplikace v RubyCreate a Ruby application

Vytvořte aplikaci v Ruby.Create a Ruby application. Pokyny najdete v tématu Vytvoření aplikace v Ruby v App Service v systému Linux.For instructions, see Create a Ruby application in App Service on Linux.

Konfigurace aplikace pro přístup k úložištiConfigure your application to access storage

Pokud chcete použít Azure Storage, musíte si stáhnout a použít balíček Ruby Azure, který zahrnuje sadu praktických knihoven, které komunikují se službou REST (Storage).To use Azure Storage, you need to download and use the Ruby Azure package, which includes a set of convenience libraries that communicate with the storage REST services.

Získání balíčku pomocí RubyGemsUse RubyGems to obtain the package

  1. Použijte rozhraní příkazového řádku, jako je PowerShell (Windows), Terminál (Mac) nebo Bash (Unix).Use a command-line interface such as PowerShell (Windows), Terminal (Mac), or Bash (Unix).
  2. gem install AzureDo příkazového řádku zadejte a nainstalujte Gem a závislosti.Type gem install Azure in the command window to install the gem and dependencies.

Import balíčkuImport the package

Použijte svůj oblíbený textový editor, do horní části souboru Ruby přidejte následující, kde chcete úložiště použít:Use your favorite text editor, add the following to the top of the Ruby file where you intend to use storage:

require "azure"

Nastavení Azure Storageho připojeníSetup an Azure Storage connection

Modul Azure přečte proměnné prostředí AZURE_STORAGE_ACCOUNT a AZURE_STORAGE_ACCESS_KEY informace požadované pro připojení k vašemu Azure Storage účtu.The Azure module will read the environment variables AZURE_STORAGE_ACCOUNT and AZURE_STORAGE_ACCESS_KEY for information required to connect to your Azure Storage account. Nejsou-li tyto proměnné prostředí nastaveny, je nutné zadat informace o účtu před použitím Azure::QueueService s následujícím kódem:If these environment variables are not set, you must specify the account information before using Azure::QueueService with the following code:

Azure.config.storage_account_name = "<your azure storage account>"
Azure.config.storage_access_key = "<your Azure storage access key>"

Získání těchto hodnot z klasického účtu úložiště nebo účtu úložiště Resource Manageru na webu Azure Portal:To obtain these values from a classic or Resource Manager storage account in the Azure portal:

  1. Přihlaste se k Azure Portal.Log in to the Azure portal.
  2. Přejděte k účtu úložiště, který chcete použít.Navigate to the storage account you want to use.
  3. V okně Nastavení na pravé straně klikněte na přístupové klíče.In the Settings blade on the right, click Access Keys.
  4. V zobrazeném okně přístupové klíče uvidíte přístupová klávesa 1 a přístupová klávesa 2.In the Access Keys blade that appears, you'll see the access key 1 and access key 2. Můžete použít libovolný z nich.You can use either of these.
  5. Kliknutím na ikonu kopírování zkopírujte klíč do schránky.Click the copy icon to copy the key to the clipboard.

Postupy: vytvoření frontyHow to: Create a queue

Následující kód vytvoří Azure::QueueService objekt, který vám umožní pracovat s frontami.The following code creates a Azure::QueueService object, which enables you to work with queues.

azure_queue_service = Azure::QueueService.new

Pomocí create_queue() metody vytvořte frontu se zadaným názvem.Use the create_queue() method to create a queue with the specified name.

begin
  azure_queue_service.create_queue("test-queue")
rescue
  puts $!
end

Postupy: vložení zprávy do frontyHow to: Insert a message into a queue

Chcete-li vložit zprávu do fronty, použijte create_message() metodu k vytvoření nové zprávy a jejímu přidání do fronty.To insert a message into a queue, use the create_message() method to create a new message and add it to the queue.

azure_queue_service.create_message("test-queue", "test message")

Postupy: prohlížení další zprávyHow to: Peek at the next message

Můžete prohlížet zprávy před frontou, aniž byste je museli odebírat z fronty voláním peek_messages() metody.You can peek at the message in the front of a queue without removing it from the queue by calling the peek_messages() method. Ve výchozím nastavení se peek_messages() v jedné zprávě prohlédne.By default, peek_messages() peeks at a single message. Můžete také zadat, kolik zpráv chcete prohlížet.You can also specify how many messages you want to peek.

result = azure_queue_service.peek_messages("test-queue",
  {:number_of_messages => 10})

Postupy: vyřazení další zprávy z frontyHow to: Dequeue the next message

Můžete odebrat zprávu z fronty ve dvou krocích.You can remove a message from a queue in two steps.

  1. Když zavoláte list_messages() , dostanete ve výchozím nastavení další zprávu ve frontě.When you call list_messages(), you get the next message in a queue by default. Můžete také zadat, kolik zpráv chcete získat.You can also specify how many messages you want to get. Zprávy vrácené z list_messages() se stávají neviditelné pro jakýkoliv jiný kód, který čte zprávy z této fronty.The messages returned from list_messages() becomes invisible to any other code reading messages from this queue. Jako parametr předáte časový limit viditelnosti v sekundách.You pass in the visibility timeout in seconds as a parameter.
  2. Chcete-li dokončit odebrání zprávy z fronty, je také nutné zavolat delete_message() .To finish removing the message from the queue, you must also call delete_message().

Tento dvoustupňový proces odebrání zprávy zaručuje, že pokud váš kód nedokáže zpracovat zprávu z důvodu selhání hardwaru nebo softwaru, může jiná instance kódu získat stejnou zprávu a zkusit to znovu.This two-step process of removing a message assures that when your code fails to process a message due to hardware or software failure, another instance of your code can get the same message and try again. Váš kód volá delete_message() hned po zpracování zprávy.Your code calls delete_message() right after the message has been processed.

messages = azure_queue_service.list_messages("test-queue", 30)
azure_queue_service.delete_message("test-queue",
  messages[0].id, messages[0].pop_receipt)

Postupy: Změna obsahu zprávy ve frontěHow to: Change the contents of a queued message

Podle potřeby můžete změnit obsah zprávy přímo ve frontě.You can change the contents of a message in-place in the queue. Následující kód používá update_message() metodu k aktualizaci zprávy.The following code uses the update_message() method to update a message. Metoda vrátí řazenou kolekci členů, která obsahuje přijetí pop zprávy fronty, a DateTime hodnotu UTC, která představuje, kdy bude zpráva ve frontě viditelná.The method will return a tuple which contains the pop receipt of the queue message and a UTC DateTime value that represents when the message will be visible on the queue.

message = azure_queue_service.list_messages("test-queue", 30)
pop_receipt, time_next_visible = azure_queue_service.update_message(
  "test-queue", message.id, message.pop_receipt, "updated test message",
  30)

Postupy: Další možnosti pro vyřazování zpráv z frontyHow to: Additional options for dequeuing messages

Načítání zpráv z fronty si můžete přizpůsobit dvěma způsoby.There are two ways you can customize message retrieval from a queue.

  1. Můžete získat dávku zprávy.You can get a batch of message.
  2. Můžete nastavit delší nebo kratší časový limit neviditelnosti, což umožňuje, aby váš kód měl více nebo méně času na úplné zpracování každé zprávy.You can set a longer or shorter invisibility timeout, allowing your code more or less time to fully process each message.

Následující příklad kódu používá list_messages() metodu k získání 15 zpráv v jednom volání.The following code example uses the list_messages() method to get 15 messages in one call. Pak vytiskne a odstraní každou zprávu.Then it prints and deletes each message. Také se pro každou zprávu nastaví časový limit neviditelnosti 5 minut.It also sets the invisibility timeout to five minutes for each message.

azure_queue_service.list_messages("test-queue", 300
  {:number_of_messages => 15}).each do |m|
  puts m.message_text
  azure_queue_service.delete_message("test-queue", m.id, m.pop_receipt)
end

Postupy: získání délky frontyHow to: Get the queue length

Můžete získat odhad počtu zpráv ve frontě.You can get an estimation of the number of messages in the queue. get_queue_metadata()Metoda vrátí přibližný počet zpráv a další metadata fronty.The get_queue_metadata() method returns the approximate message count and other queue metadata.

message_count, metadata = azure_queue_service.get_queue_metadata(
  "test-queue")

Postupy: odstranění frontyHow to: Delete a queue

Pokud chcete odstranit frontu a všechny zprávy, které jsou v ní obsažené, zavolejte delete_queue() metodu u objektu Queue.To delete a queue and all the messages contained in it, call the delete_queue() method on the queue object.

azure_queue_service.delete_queue("test-queue")

Další krokyNext steps

Teď, když jste se naučili základy Queue Storage, postupujte podle těchto odkazů a získejte další informace o složitějších úlohách úložiště.Now that you've learned the basics of Queue Storage, follow these links to learn about more complex storage tasks.

Srovnání mezi Azure Queue Storage popsané v tomto článku a v Azure Service Busch frontách popsaných v tématu Jak používat Service Bus frontynajdete v tématu azure Queue Storage a Service Bus queueed a contrastd .For a comparison between Azure Queue Storage discussed in this article and Azure Service Bus queues discussed in How to use Service Bus queues, see Azure Queue Storage and Service Bus queues - compared and contrasted