A Queue Storage használata Rubyból
Tipp
Próbálja ki a Microsoft Azure Storage Explorert
A Microsoft Azure Storage Explorer egy ingyenes, önálló alkalmazás, amelynek segítségével vizuálisan dolgozhat Azure Storage-adatokkal Windows, macOS és Linux rendszereken.
Áttekintés
Ez az útmutató bemutatja, hogyan hajthat végre gyakori forgatókönyveket a Microsoft Azure Queue Storage szolgáltatással. A minták a Ruby Azure API használatával vannak megírva. A tárgyalt forgatókönyvek közé tartozik az üzenetsor-üzenetek beszúrása, betekintése, lekérése és törlése , valamint az üzenetsorok létrehozása és törlése.
Mi az a Queue Storage?
Az Azure Queue Storage szolgáltatás üzenetek nagy számban történő tárolására szolgál, amelyek HTTP- vagy HTTPS-kapcsolattal, hitelesített hívásokon keresztül a világon bárhonnan elérhetők. Egyetlen üzenetsor akár 64 KB méretű is lehet, és a tárfiók maximális kapacitásán belül több millió üzenetet tartalmazhat. A Queue Storage-ot gyakran használják a feladatok hátralékának létrehozására az aszinkron feldolgozáshoz.
Üzenetsor-szolgáltatással kapcsolatos fogalmak
Az Azure Queue szolgáltatás a következő összetevőket tartalmazza:
Tárfiók: Az Azure Storage-hoz való hozzáférés egy tárfiókon keresztül történik. További információ a tárfiókokról: Tárfiókok áttekintése.
Üzenetsor: Az üzenetsorok üzenetek készleteit tartalmazzák. Az összes üzenetnek üzenetsorban kell lennie. Vegye figyelembe, hogy az üzenetsor neve csak kisbetűket tartalmazhat. Az üzenetsorok elnevezésével kapcsolatos információkat lásd: Naming Queues and Metadata (Üzenetsorok és metaadatok elnevezése).
Üzenet: Egy legfeljebb 64 KB méretű, tetszőleges méretű üzenet. Egy üzenet legfeljebb 7 napig maradhat egy üzenetsorban. A 2017-07-29-es vagy újabb verzió esetén a maximális élettartam bármilyen pozitív szám lehet, vagy -1, amely azt jelzi, hogy az üzenet nem jár le. Ha ezt a paramétert nem adja meg, az alapértelmezett élettartam hét nap.
URL-formátum: Az üzenetsorok a következő URL-formátumban címezhetők: http://
<storage account>
.queue.core.windows.net/<queue>
Az ábra egyik üzenetsora a következő URL-címmel érhető el:
http://myaccount.queue.core.windows.net/incoming-orders
Azure-tárfiók létrehozása
Az első Azure Storage-fiók létrehozásának legegyszerűbb módja az Azure Portal használata. További tudnivalókért lásd: Create a storage account (Tárfiók létrehozása).
Ezenkívül az Azure PowerShell, az Azure CLI, illetve a .NET-keretrendszerhez készült Azure Storage erőforrás-szolgáltató használatával is létrehozhat egy Azure-tárfiókot.
Ha jelenleg nem szeretne tárfiókot létrehozni az Azure-ban, az Azurite Storage Emulator használatával helyi környezetben is futtathatja és tesztelheti a kódot. További információ: Az Azurite emulátor használata helyi Azure Storage-fejlesztéshez.
Ruby-alkalmazás létrehozása
Hozzon létre egy Ruby-alkalmazást. Útmutatásért lásd: Ruby-alkalmazás létrehozása App Service on Linux.
Az alkalmazás konfigurálása a tároló eléréséhez
Az Azure Storage használatához le kell töltenie és használnia kell a Ruby Azure-csomagot, amely kényelmi kódtárakat tartalmaz, amelyek kommunikálnak a storage REST-szolgáltatásokkal.
A csomag beszerzése a RubyGems használatával
- Használjon egy parancssori felületet, mint például a PowerShell (Windows), a Terminal (Mac), vagy a Bash (Unix).
- Írja be
gem install azure
a parancsablakba a gem és a függőségek telepítéséhez.
A csomag importálása
Használja a kedvenc szövegszerkesztőt, és adja hozzá a következőket a Ruby-fájl elejéhez, ahol a tárterületet szeretné használni:
require "azure"
Azure Storage-kapcsolat beállítása
Az Azure-modul beolvassa a környezeti változókat AZURE_STORAGE_ACCOUNT
, valamint AZURE_STORAGE_ACCESS_KEY
az Azure Storage-fiókhoz való csatlakozáshoz szükséges információkat. Ha ezek a környezeti változók nincsenek beállítva, a következő kóddal való használat Azure::QueueService
előtt meg kell adnia a fiókadatokat:
Azure.config.storage_account_name = "<your azure storage account>"
Azure.config.storage_access_key = "<your Azure storage access key>"
Ezeket az értékeket a következőképp kérheti le egy klasszikus vagy Resource Manager-tárfiókból az Azure Portalon:
- Jelentkezzen be a Azure Portal.
- Keresse meg a használni kívánt tárfiókot.
- A jobb oldali Beállítások panelen kattintson a Hozzáférési kulcsok elemre.
- A megjelenő Hívóbetűk panelen megjelenik az 1. hozzáférési kulcs és a 2. hozzáférési kulcs. Ezek bármelyikét használhatja.
- Kattintson a másolás gombra, hogy a kulcsot a vágólapra másolja.
Útmutató: Üzenetsor létrehozása
Az alábbi kód létrehoz egy Azure::QueueService
objektumot, amely lehetővé teszi az üzenetsorok használatát.
azure_queue_service = Azure::QueueService.new
create_queue()
A metódus használatával hozzon létre egy üzenetsort a megadott névvel.
begin
azure_queue_service.create_queue("test-queue")
rescue
puts $!
end
Útmutató: Üzenet beszúrása üzenetsorba
Ha üzenetsorba szeretne beszúrni egy üzenetet, a create_message()
metódussal hozzon létre egy új üzenetet, és adja hozzá az üzenetsorhoz.
azure_queue_service.create_message("test-queue", "test message")
Útmutató: Betekintés a következő üzenetbe
A metódus meghívásával betekinthet az üzenetsor elejére anélkül, hogy eltávolítaná azt az peek_messages()
üzenetsorból. Alapértelmezés szerint peek_messages()
egyetlen üzenetre néz. Azt is megadhatja, hogy hány üzenetet szeretne betekinteni.
result = azure_queue_service.peek_messages("test-queue",
{:number_of_messages => 10})
Útmutató: A következő üzenet törlése
Az üzeneteket két lépésben távolíthatja el az üzenetsorból.
- A hívásakor
list_messages()
alapértelmezés szerint egy üzenetsorba kerül a következő üzenet. Azt is megadhatja, hogy hány üzenetet szeretne kapni. A visszaadottlist_messages()
üzenetek láthatatlanná válnak az üzenetsorból érkező üzeneteket olvasó többi kód számára. A láthatósági időtúllépést másodpercben adja meg paraméterként. - Az üzenet üzenetsorból való eltávolításának befejezéséhez meg kell hívnia a következőt
delete_message()
is: .
Az üzenet eltávolításának kétlépéses folyamata biztosítja, hogy ha a kód hardver- vagy szoftverhiba miatt nem tudja feldolgozni az üzenetet, a kód egy másik példánya is megkaphatja ugyanazt az üzenetet, és újra próbálkozhat. A kód közvetlenül az üzenet feldolgozása után hív delete_message()
.
messages = azure_queue_service.list_messages("test-queue", 30)
azure_queue_service.delete_message("test-queue",
messages[0].id, messages[0].pop_receipt)
Útmutató: Üzenetsorba helyezett üzenet tartalmának módosítása
Egy üzenetet tartalmát helyben, az üzenetsorban módosíthatja. Az alábbi kód a metódust használja egy update_message()
üzenet frissítéséhez. A metódus egy rekordot ad vissza, amely tartalmazza az üzenetsor üzenetének pop nyugtát és egy UTC-értéket DateTime
, amely azt jelzi, hogy mikor lesz látható az üzenet az üzenetsorban.
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)
Útmutató: További lehetőségek az üzenetek törlésére
Két módon szabhatja testre az üzenetek lekérését egy üzenetsorból.
- Üzenetköteget kaphat.
- Beállíthat hosszabb vagy rövidebb láthatatlansági időtúllépést, így a kód többé-kevésbé időt hagy az egyes üzenetek teljes feldolgozására.
Az alábbi példakód a list_messages()
metódust használja 15 üzenet lekérésére egy hívásban. Ezután kinyomtatja és törli az egyes üzeneteket. Mindemellett a láthatatlansági időkorlátot minden üzenethez öt percre állítja be.
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
Útmutató: Az üzenetsor hosszának lekérése
A várólistán lévő üzenetek számának becslését lekérheti. A get_queue_metadata()
metódus az üzenetsorok hozzávetőleges számát és egyéb metaadatait adja vissza.
message_count, metadata = azure_queue_service.get_queue_metadata(
"test-queue")
Útmutató: Üzenetsor törlése
Ha törölni szeretne egy üzenetsort és az abban található összes üzenetet, hívja meg a metódust delete_queue()
a queue objektumon.
azure_queue_service.delete_queue("test-queue")
Következő lépések
Most, hogy megismerte a Queue Storage alapjait, kövesse ezeket a hivatkozásokat az összetettebb tárolási feladatok megismeréséhez.
- Látogasson el az Azure Storage csapat blogjára
- Látogasson el az Azure SDK for Ruby-adattárba a GitHubon
A cikkben tárgyalt Azure Queue Storage és Azure Service Bus üzenetsorok összehasonlítását a Service Bus-üzenetsorok használata című témakörben találja: Azure Queue Storage és Service Bus-üzenetsorok – összehasonlítva és összehasonlítva