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:

Az Azure Queue szolgáltatás összetevői

  • 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

  1. Használjon egy parancssori felületet, mint például a PowerShell (Windows), a Terminal (Mac), vagy a Bash (Unix).
  2. Í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:

  1. Jelentkezzen be a Azure Portal.
  2. Keresse meg a használni kívánt tárfiókot.
  3. A jobb oldali Beállítások panelen kattintson a Hozzáférési kulcsok elemre.
  4. 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.
  5. 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.

  1. 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 visszaadott list_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.
  2. 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.

  1. Üzenetköteget kaphat.
  2. 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.

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