Jak používat Queue Storage z Ruby

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

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. Ukázky se píší pomocí rozhraní Api Azure Pro Ruby. Mezi popsané scénáře patří vkládání, náhledování, získávání a odstraňování zpráv ve frontě a také vytváření a odstraňování front.

Co je 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. 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ě. Queue Storage se často používá k vytvoření backlogu práce, která se má zpracovat asynchronně.

Koncepty služby Fronta

Služba Azure Queue obsahuje následující komponenty:

Komponenty služby Azure Queue

  • Účet úložiště: Veškerý přístup ke službě Azure Storage se provádí prostřednictvím účtu úložiště. Další informace o účtech úložiště najdete v tématu Přehled účtu úložiště.

  • Fronta: Fronta obsahuje sadu zpráv. Všechny zprávy musí být ve frontě. Upozorňujeme, že název fronty musí být psaný malými písmeny. Informace o pojmenování front najdete v tématu Pojmenování front a metadata.

  • Zpráva: Zprávu v libovolném formátu o velikosti až 64 kB. Maximální doba, po kterou může zpráva zůstat ve frontě, je 7 dní. Pro verzi 2017-07-29 nebo novější může být maximální hodnota time-to-live libovolné kladné číslo nebo -1 označující, že platnost zprávy nevyprší. Pokud je tento parametr vynechán, výchozí hodnota time-to-live je sedm dní.

  • Formát adresy URL: Fronty lze adresovat pomocí následujícího formátu adresy URL: http://<storage account>.queue.core.windows.net/<queue>

    Následující adresa URL odkazuje na frontu v diagramu:

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

Vytvoření účtu úložiště Azure

Nejjednodušší způsob, jak vytvořit první účet úložiště Azure, je použít Azure Portal. Další informace najdete v tématu Vytvoření účtu úložiště.

Úč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.

Pokud nechcete v tuto chvíli vytvořit účet úložiště v Azure, můžete také použít emulátor úložiště Azurite ke spuštění a testování kódu v místním prostředí. Další informace najdete v tématu Použití emulátoru Azurite pro místní vývoj služby Azure Storage.

Vytvoření aplikace v Ruby

Vytvořte aplikaci Ruby. Pokyny najdete v tématu Vytvoření aplikace Ruby v App Service v Linuxu.

Konfigurace aplikace pro přístup k úložišti

Pokud chcete používat Azure Storage, musíte si stáhnout a použít balíček Azure Ruby, který obsahuje sadu knihoven pro usnadnění, které komunikují se službami REST úložiště.

Získání balíčku pomocí RubyGems

  1. Použijte rozhraní příkazového řádku, jako je PowerShell (Windows), Terminál (Mac) nebo Bash (Unix).
  2. Zadáním gem install azure příkazu do příkazového okna nainstalujte gem a závislosti.

Import balíčku

Použijte svůj oblíbený textový editor a na začátek souboru Ruby, ve kterém chcete používat úložiště, přidejte následující:

require "azure"

Nastavení připojení ke službě Azure Storage

Modul Azure přečte proměnné AZURE_STORAGE_ACCOUNT prostředí a AZURE_STORAGE_ACCESS_KEY informace potřebné pro připojení k účtu služby Azure Storage. Pokud tyto proměnné prostředí nejsou nastavené, musíte před použitím Azure::QueueService s následujícím kódem zadat informace o účtu:

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:

  1. Přihlaste se k Azure Portal.
  2. Přejděte k účtu úložiště, který chcete použít.
  3. V okně Nastavení na pravé straně klikněte na Přístupové klíče.
  4. V okně Přístupové klíče , které se zobrazí, uvidíte přístupový klíč 1 a přístupový klíč 2. Můžete použít libovolný z nich.
  5. Kliknutím na ikonu kopírování zkopírujte klíč do schránky.

Postupy: Vytvoření fronty

Následující kód vytvoří Azure::QueueService objekt, který vám umožní pracovat s frontami.

azure_queue_service = Azure::QueueService.new

create_queue() Pomocí metody vytvořte frontu se zadaným názvem.

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

Postupy: Vložení zprávy do fronty

Pokud chcete vložit zprávu do fronty, pomocí create_message() metody vytvořte novou zprávu a přidejte ji do fronty.

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

Postupy: Náhled na další zprávu

Voláním metody můžete zobrazit zprávu před frontou, aniž byste ji z fronty odebrali peek_messages() . Ve výchozím nastavení peek_messages() se zobrazí náhled na jednu zprávu. Můžete také určit, kolik zpráv chcete zobrazit.

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

Postupy: Zrušení zařazení další zprávy

Zprávu můžete z fronty odebrat ve dvou krocích.

  1. Při volání list_messages()se ve výchozím nastavení zobrazí další zpráva ve frontě. Můžete také určit, kolik zpráv chcete získat. Zprávy vrácené z list_messages() budou neviditelné pro jakýkoli jiný kód, který čte zprávy z této fronty. Časový limit viditelnosti předáte v sekundách jako parametr.
  2. Pokud chcete dokončit odebrání zprávy z fronty, musíte také volat delete_message().

Tento dvoustupňový proces odebrání zprávy zajišťuje, že když se vašemu kódu nepodaří zpracovat zprávu kvůli selhání hardwaru nebo softwaru, může jiná instance vašeho kódu získat stejnou zprávu a zkusit to znovu. Váš kód zavolá delete_message() hned po zpracování zprávy.

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ě

Podle potřeby můžete změnit obsah zprávy přímo ve frontě. Následující kód používá metodu update_message() k aktualizaci zprávy. Metoda vrátí řazenou kolekci členů, která obsahuje pop příjem zprávy fronty a hodnotu UTC DateTime , která představuje, kdy bude zpráva viditelná ve frontě.

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řazení zpráv z fronty

Načítání zpráv z fronty si můžete přizpůsobit dvěma způsoby.

  1. Můžete získat dávku zprávy.
  2. Můžete nastavit delší nebo kratší časový limit neviditelnosti, což kódu umožní více či méně času na úplné zpracování každé zprávy.

Následující příklad kódu používá metodu list_messages() k získání 15 zpráv v jednom volání. Potom vytiskne a odstraní každou zprávu. Také se pro každou zprávu nastaví časový limit neviditelnosti 5 minut.

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 fronty

Můžete získat odhad počtu zpráv ve frontě. Metoda get_queue_metadata() vrátí přibližný počet zpráv a další metadata fronty.

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

Postupy: Odstranění fronty

Pokud chcete odstranit frontu a všechny zprávy v ní obsažené, zavolejte metodu delete_queue() objektu queue.

azure_queue_service.delete_queue("test-queue")

Další kroky

Teď, když jste se seznámili se základy služby Queue Storage, použijte tyto odkazy a seznamte se se složitějšími úlohami úložiště.

Porovnání mezi službou Azure Queue Storage probíranou v tomto článku a frontami Azure Service Bus probíranými v tématu Použití front Service Bus najdete v tématu Porovnání a porovnání front služby Service Bus ve službě Azure Queue Storage a fronty služby Service Bus.