Använda Queue Storage från Ruby

Tips

Prova Microsoft Azure Lagringsutforskaren

Microsoft Azure Storage Explorer är en kostnadsfri, fristående app från Microsoft som gör det möjligt att arbeta visuellt med Azure Storage-data i Windows, macOS och Linux.

Översikt

Den här guiden visar hur du utför vanliga scenarier med hjälp av Microsoft Azure Queue Storage-tjänsten. Exemplen skrivs med Ruby Azure API. De scenarier som beskrivs omfattar infogning, tittning, hämtar och tar bort kömeddelanden samt att skapa och ta bort köer.

Vad är Queue Storage?

Azure Queue Storage är en tjänst för att lagra stora mängder meddelanden som kan nås från var som helst i världen via autentiserade anrop med HTTP eller HTTPS. Ett enda kömeddelande kan vara upp till 64 KB stort och en kö kan innehålla miljontals meddelanden, upp till den totala kapacitetsgränsen för ett lagringskonto. Kölagring används ofta för att skapa en kvarvarande arbetslogg för att bearbeta asynkront.

Begrepp för kötjänst

Azure Queue-tjänsten innehåller följande komponenter:

Azure Queue-tjänstkomponenter

  • Lagringskonto: All åtkomst till Azure Storage görs genom ett lagringskonto. Mer information om lagringskonton finns i Översikt över lagringskonto.

  • Kö: en kö innehåller en uppsättning meddelanden. Alla meddelanden måste vara i en kö. Observera att könamnet måste vara helt i gemener. Mer information om namngivning av köer finns i namngivning av köer och metadata.

  • Meddelande: ett meddelande i valfritt format, som är upp till 64 KB. Den maximala tid som ett meddelande kan finnas i kön är 7 dagar. För version 2017-07-29 eller senare kan den maximala time-to-live vara ett positivt tal, eller -1 som anger att meddelandet inte upphör att gälla. Om den här parametern utelämnas är standardtiden att leva sju dagar.

  • URL-format: Köer kan adresseras med följande URL-format: http://<storage account>.queue.core.windows.net/<queue>

    Följande URL adresserar en kö i diagrammet:

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

Skapa ett Azure Storage-konto

Det enklaste sättet att skapa ditt första Azure Storage-konto är att använda Azure Portal. Läs mer i Skapa ett lagringskonto.

Du kan också skapa ett Azure Storage-konto med Azure PowerShell, Azure CLI eller Azure Storage-resursprovidern för .NET.

Om du föredrar att inte skapa ett lagringskonto i Azure just nu kan du också använda Azurite Storage-emulatorn för att köra och testa koden i en lokal miljö. Mer information finns i Använda Azurite-emulatorn för lokal Azure Storage-utveckling.

Skapa ett Ruby-program

Skapa ett Ruby-program. Anvisningar finns i Skapa ett Ruby-program i App Service på Linux.

Konfigurera ditt program för åtkomst till lagring

Om du vill använda Azure Storage måste du ladda ned och använda Ruby Azure-paketet, som innehåller en uppsättning bekvämlighetsbibliotek som kommunicerar med REST-tjänsterna för lagring.

Hämta paketet med hjälp av RubyGems

  1. Använd ett kommandoradsgränssnitt som PowerShell (Windows), Terminal (Mac) eller Bash (Unix).
  2. Skriv gem install azure i kommandofönstret för att installera gem och beroenden.

Importera paketet

Använd din favorittextredigerare och lägg till följande överst i Ruby-filen där du tänker använda lagring:

require "azure"

Konfigurera en Azure Storage-anslutning

Azure-modulen läser miljövariablerna AZURE_STORAGE_ACCOUNT och AZURE_STORAGE_ACCESS_KEY för information som krävs för att ansluta till ditt Azure Storage-konto. Om dessa miljövariabler inte har angetts måste du ange kontoinformationen innan du använder Azure::QueueService med följande kod:

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

Du kan hämta dessa värden från ett klassiskt eller Resource Manager-baserat lagringskonto på Azure Portal:

  1. Logga in på Azure Portal.
  2. Gå till det lagringskonto som du vill använda.
  3. På bladet Inställningar till höger klickar du på Åtkomstnycklar.
  4. På bladet Åtkomstnycklar som visas visas åtkomstnyckeln 1 och åtkomstnyckel 2. Du kan använda vilken av nycklarna du vill.
  5. Kopiera nyckeln till Urklipp genom att klicka på kopieringsikonen.

Anvisningar: Skapa en kö

Följande kod skapar ett Azure::QueueService objekt som gör att du kan arbeta med köer.

azure_queue_service = Azure::QueueService.new

create_queue() Använd metoden för att skapa en kö med det angivna namnet.

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

Anvisningar: Infoga ett meddelande i en kö

Om du vill infoga ett meddelande i en kö använder du create_message() metoden för att skapa ett nytt meddelande och lägga till det i kön.

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

Anvisningar: Titta på nästa meddelande

Du kan titta på meddelandet framför en kö utan att ta bort det från kön genom att anropa peek_messages() metoden . Som standard peek_messages() tittar du på ett enda meddelande. Du kan också ange hur många meddelanden du vill granska.

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

Anvisningar: Avmarkera nästa meddelande

Du kan ta bort ett meddelande från en kö i två steg.

  1. När du anropar list_messages()får du nästa meddelande i en kö som standard. Du kan också ange hur många meddelanden du vill få. Meddelanden som returneras från list_messages() blir osynliga för andra kodläsningsmeddelanden från den här kön. Du skickar in tidsgränsen för synlighet i sekunder som en parameter.
  2. Om du vill ta bort meddelandet från kön måste du även anropa delete_message().

Den här tvåstegsprocessen för att ta bort ett meddelande säkerställer att när koden inte kan bearbeta ett meddelande på grund av maskinvaru- eller programvarufel kan en annan instans av koden få samma meddelande och försöka igen. Koden anropas delete_message() direkt efter att meddelandet har bearbetats.

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

Anvisningar: Ändra innehållet i ett köat meddelande

Du kan ändra innehållet i ett meddelande direkt i kön. Följande kod använder update_message() metoden för att uppdatera ett meddelande. Metoden returnerar en tupplar som innehåller popkvittot för kömeddelandet och ett UTC-värde DateTime som representerar när meddelandet ska visas i kön.

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)

Anvisningar: Ytterligare alternativ för att avqueuera meddelanden

Det finns två metoder som du kan använda för att anpassa meddelandehämtningen från en kö.

  1. Du kan få en batch med meddelanden.
  2. Du kan ange en längre eller kortare tidsgräns för osynlighet, vilket ger koden mer eller mindre tid att bearbeta varje meddelande fullständigt.

I följande kodexempel används list_messages() metoden för att hämta 15 meddelanden i ett anrop. Sedan skrivs varje meddelande ut och tas bort. Koden ställer också in tidsgränsen för osynlighet till fem minuter för varje meddelande.

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

Anvisningar: Hämta kölängden

Du kan få en uppskattning av antalet meddelanden i kön. Metoden get_queue_metadata() returnerar det ungefärliga antalet meddelanden och andra kömetadata.

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

Anvisningar: Ta bort en kö

Om du vill ta bort en kö och alla meddelanden som finns i den anropar delete_queue() du metoden för köobjektet.

azure_queue_service.delete_queue("test-queue")

Nästa steg

Nu när du har lärt dig grunderna i Queue Storage följer du dessa länkar för att lära dig mer om mer komplexa lagringsuppgifter.

En jämförelse mellan Azure Queue Storage som beskrivs i den här artikeln och Azure Service Bus köer som beskrivs i Så här använder du Service Bus-köer finns i Azure Queue Storage- och Service Bus-köer – jämfört med och kontrasterade