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:
Úč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
- Použijte rozhraní příkazového řádku, jako je PowerShell (Windows), Terminál (Mac) nebo Bash (Unix).
- 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:
- Přihlaste se k Azure Portal.
- Přejděte k účtu úložiště, který chcete použít.
- V okně Nastavení na pravé straně klikněte na Přístupové klíče.
- 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.
- 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.
- 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é zlist_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. - 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.
- Můžete získat dávku zprávy.
- 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ě.
- Navštivte blog týmu Azure Storage
- Navštivte úložiště Azure SDK pro Ruby na GitHubu.
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.