Delen via


Queue Storage gebruiken vanuit Ruby

Hint

Probeer de Microsoft Azure Storage Explorer

Microsoft Azure Storage Explorer is een gratis, zelfstandige app van Microsoft waarmee u visueel met Azure Storage-gegevens kunt werken in Windows, macOS en Linux.

Overzicht

Deze handleiding laat zien hoe u algemene scenario's uitvoert met behulp van de Microsoft Azure Queue Storage-service. De voorbeelden worden geschreven met behulp van de Ruby Azure-API. De scenario's die worden behandeld, zijn het invoegen van, het bekijken van, het ophalen vanen het verwijderen van wachtrijberichten, evenals het maken en verwijderen van wachtrijen.

Wat is wachtrijopslag?

Azure Queue Storage is een service voor het opslaan van grote aantallen berichten die overal ter wereld toegankelijk zijn via geverifieerde aanroepen via HTTP of HTTPS. Eén wachtrijbericht kan maximaal 64 kB groot zijn en een wachtrij kan miljoenen berichten bevatten, tot aan de totale capaciteitslimiet van een opslagaccount. Queue Storage wordt vaak gebruikt om een wachtrij van taken te maken voor asynchrone verwerking.

Concepten van wachtrijservice

De Azure Queue-service bevat de volgende onderdelen:

Azure Queue-serviceonderdelen

  • opslagaccount: Alle toegang tot Azure Storage wordt uitgevoerd via een opslagaccount. Zie Overzicht van opslagaccount voor meer informatie over opslagaccounts.

  • Wachtrij: Een wachtrij bevat een set berichten. Alle berichten moeten zich in een wachtrij bevinden. De naam van een wachtrij mag alleen kleine letters bevatten. Zie Naming Queues and Metadata (Wachtrijen en metagegevens een naam geven) voor informatie over de naamgeving van wachtrijen.

  • Bericht: Een bericht in een willekeurige indeling, van maximaal 64 KB. De maximale tijd dat een bericht in de wachtrij kan blijven, is 7 dagen. Voor versie 29-07-2017 of hoger mag de maximale time-to-live elk positief getal zijn. Of -1 om aan te geven dat het bericht niet verloopt. Als deze parameter wordt weggelaten, is de standaard time-to-live zeven dagen.

  • URL-indeling: wachtrijen kunnen worden aangesproken met behulp van de volgende URL-indeling: http://<storage account>.queue.core.windows.net/<queue>

    De volgende URL verwijst naar een wachtrij in het diagram.

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

Een Azure-opslagaccount maken

De eenvoudigste manier om uw eerste Azure-opslagaccount te maken, is met behulp van de Azure Portal. Zie: Een opslagaccount maken voor meer informatie.

U kunt ook een Azure-opslagaccount maken met behulp van Azure PowerShell-, Azure CLI-of de Azure Storage-resourceprovider voor .NET.

Als u op dit moment liever geen opslagaccount in Azure wilt maken, kunt u ook de Emulator van de Azurite-opslag gebruiken om uw code in een lokale omgeving uit te voeren en te testen. Zie De Azurite-emulator gebruiken voor lokale Azure Storage-ontwikkelingvoor meer informatie.

Een Ruby-toepassing maken

Een Ruby-toepassing maken. Zie Een Ruby-toepassing maken in App Service op Linux voor instructies.

Uw toepassing configureren voor toegang tot opslag

Als u Azure Storage wilt gebruiken, moet u het Ruby Azure-pakket downloaden en gebruiken, dat een set handige bibliotheken bevat die communiceren met de opslag-REST-services.

RubyGems gebruiken om het pakket te verkrijgen

  1. Gebruik een opdrachtregelinterface zoals PowerShell (Windows), Terminal (Mac) of Bash (Unix).
  2. Typ gem install azure in het opdrachtvenster om de gem en afhankelijkheden te installeren.

Het pakket importeren

Gebruik uw favoriete teksteditor en voeg het volgende toe aan het begin van het Ruby-bestand waar u opslag wilt gebruiken:

require "azure"

Een Azure Storage-verbinding instellen

De Azure-module leest de omgevingsvariabelen AZURE_STORAGE_ACCOUNT en AZURE_STORAGE_ACCESS_KEY voor informatie die nodig is om verbinding te maken met uw Azure Storage-account. Als deze omgevingsvariabelen niet zijn ingesteld, moet u de accountgegevens opgeven voordat u deze met de volgende code gebruikt Azure::QueueService :

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

Ga als volgt te werk om deze waarden op te halen uit een klassiek of Resource Manager-opslagaccount in Azure Portal:

  1. Meld u aan bij Azure Portal.
  2. Navigeer naar het opslagaccount dat u wilt gebruiken.
  3. Klik op de blade Instellingen aan de rechterkant op Toegangssleutels.
  4. Op de blade Toegangssleutels die wordt weergegeven, ziet u de toegangssleutel 1 en toegangssleutel 2. U kunt een van deze opties gebruiken.
  5. Klik op het kopieerpictogram om de sleutel naar het klembord te kopiëren.

Hoe te: Een wachtrij maken

Met de volgende code wordt een Azure::QueueService object gemaakt, waarmee u met wachtrijen kunt werken.

azure_queue_service = Azure::QueueService.new

Gebruik de create_queue() methode om een wachtrij met de opgegeven naam te maken.

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

Procedure: Een bericht invoegen in een wachtrij

Als u een bericht in een wachtrij wilt invoegen, gebruikt u de create_message() methode om een nieuw bericht te maken en toe te voegen aan de wachtrij.

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

Procedure: Kijken naar het volgende bericht

U kunt het bericht vooraan in een wachtrij bekijken zonder het uit de wachtrij te verwijderen door de methode peek_messages() aan te roepen. peek_messages() Bekijk standaard één bericht. U kunt ook opgeven hoeveel berichten u wilt bekijken.

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

Hoe te: Het volgende bericht uit de wachtrij verwijderen

U kunt in twee stappen een bericht uit een wachtrij verwijderen.

  1. Wanneer u belt list_messages(), krijgt u standaard het volgende bericht in een wachtrij. U kunt ook opgeven hoeveel berichten u wilt ontvangen. De berichten die van list_messages() worden geretourneerd, worden onzichtbaar voor andere code die berichten uit deze wachtrij leest. U geeft de time-out voor zichtbaarheid in seconden door als parameter.
  2. Als u het bericht uit de wachtrij wilt verwijderen, moet u ook delete_message()aanroepen.

Dit proces van twee stappen voor het verwijderen van een bericht zorgt ervoor dat wanneer uw code een bericht niet kan verwerken vanwege hardware- of softwarefouten, een ander exemplaar van uw code hetzelfde bericht kan krijgen en het opnieuw kan proberen. Uw code roept delete_message() direct nadat het bericht is verwerkt.

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

Hoe te: De inhoud van een wachtrijbericht wijzigen

U kunt de inhoud van een bericht ter plaatse in de wachtrij wijzigen. De volgende code gebruikt de update_message() methode om een bericht bij te werken. De methode retourneert een tuple die het pop-ontvangstbewijs van het wachtrijbericht bevat en een UTC-waarde DateTime die aangeeft wanneer het bericht zichtbaar zal zijn in de wachtrij.

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)

Hoe te doen: Aanvullende opties voor het uit de wachtrij halen van berichten

Er zijn twee manieren waarop u het ophalen van berichten vanuit een wachtrij kunt aanpassen.

  1. U kunt een set berichten ophalen.
  2. U kunt een langere of kortere time-out voor onzichtbaarheid instellen, zodat uw code meer of minder tijd heeft om elk bericht volledig te verwerken.

In het volgende codevoorbeeld wordt de list_messages() methode gebruikt om 15 berichten in één aanroep op te halen. Vervolgens wordt elk bericht afgedrukt en verwijderd. Ook wordt de time-out voor onzichtbaarheid ingesteld op vijf minuten voor elk bericht.

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

Hoe de lengte van de wachtrij te achterhalen

U kunt een schatting krijgen van het aantal berichten in de wachtrij. De get_queue_metadata() methode retourneert het geschatte aantal berichten en andere metagegevens van de wachtrij.

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

Hoe een wachtrij te verwijderen

Als u een wachtrij en alle berichten in de wachtrij wilt verwijderen, roept u de delete_queue() methode aan voor het wachtrijobject.

azure_queue_service.delete_queue("test-queue")

Volgende stappen

Nu u de basisprincipes van Queue Storage hebt geleerd, volgt u deze koppelingen voor meer informatie over complexere opslagtaken.

Voor een vergelijking tussen Azure Queue Storage die in dit artikel zijn besproken en Azure Service Bus-wachtrijen die worden besproken in Het gebruik van Service Bus-wachtrijen, raadpleegt u Azure Queue Storage- en Service Bus-wachtrijen - vergeleken en contrasterend