Queue Storage gebruiken vanuit Ruby
Tip
Microsoft Azure Storage Explorer proberen
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 veelvoorkomende scenario's uitvoert met behulp van de Microsoft Azure Queue Storage-service. De voorbeelden zijn geschreven met behulp van de Ruby Azure-API. De scenario's die worden behandeld, omvatten het invoegen, bekijken, ophalen en verwijderen van wachtrijberichten, evenals het maken en verwijderen van wachtrijen.
Wat is Queue Storage?
Azure Queue Storage is een service voor de opslag van grote aantallen berichten die via HTTP of HTTPS overal vandaan kunnen worden opgevraagd met geverifieerde aanroepen. Een enkel wachtrijbericht mag maximaal 64 KB groot zijn en een wachtrij kan miljoenen berichten bevatten, tot de totale capaciteitslimiet van een opslagaccount. Queue Storage wordt vaak gebruikt om een achterstand van werk te maken die asynchroon moet worden verwerkt.
Concepten van Queue-service
De Azure Queue-service bevat de volgende onderdelen:
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. Een bericht kan maximaal 7 dagen in de wachtrij blijven staan. 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 adresseerbaar met de volgende URL-indeling: http://
<storage account>
.queue.core.windows.net/<queue>
Met de volgende URL wordt een wachtrij in het diagram opgevraagd:
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 Resource Provider voor .NET.
Als u op dit moment liever geen opslagaccount in Azure maakt, kunt u de Azurite-opslagemulator ook gebruiken om uw code uit te voeren en te testen in een lokale omgeving. Zie Use the Azurite emulator for local Azure Storage development (De Azurite-emulator gebruiken voor lokale Azure Storage-ontwikkeling) voor 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 rest-services voor opslag.
RubyGems gebruiken om het pakket te verkrijgen
- Gebruik een opdrachtregelinterface zoals PowerShell (Windows), Terminal (Mac) of Bash (Unix).
- 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 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>"
U verkrijgt deze waarden als volgt van een klassiek of Resource Manager-opslagaccount op Azure Portal:
- Meld u aan bij Azure Portal.
- Navigeer naar het opslagaccount dat u wilt gebruiken.
- Klik op de blade Instellingen aan de rechterkant op Toegangssleutels.
- Op de blade Toegangssleutels die wordt weergegeven, ziet u de toegangssleutel 1 en toegangssleutel 2. U kunt een van beide gebruiken.
- Klik op het kopieerpictogram om de sleutel naar het klembord kopiëren.
Procedure: 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: Bekijk het volgende bericht
U kunt het bericht vooraan in een wachtrij bekijken zonder het uit de wachtrij te verwijderen door de methode aan te peek_messages()
roepen. Bekijkt standaard peek_messages()
één bericht. U kunt ook opgeven hoeveel berichten u wilt bekijken.
result = azure_queue_service.peek_messages("test-queue",
{:number_of_messages => 10})
Procedure: Het volgende bericht uit de wachtrij verwijderen
U kunt een bericht in twee stappen uit een wachtrij verwijderen.
- Wanneer u aanroept
list_messages()
, krijgt u standaard het volgende bericht in een wachtrij. U kunt ook opgeven hoeveel berichten u wilt ontvangen. De berichten die worden geretourneerd vanlist_messages()
worden onzichtbaar voor andere code die berichten uit deze wachtrij lezen. U geeft de time-out voor zichtbaarheid in seconden door als een parameter. - Als u het verwijderen van het bericht uit de wachtrij wilt voltooien, moet u ook aanroepen
delete_message()
.
Dit proces van het verwijderen van een bericht in twee stappen 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 aan 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)
Procedure: De inhoud van een bericht in de wachtrij wijzigen
U kunt de inhoud van een bericht in de wachtrij wijzigen. De volgende code gebruikt de update_message()
methode om een bericht bij te werken. De methode retourneert een tuple die de pop-ontvangst van het wachtrijbericht en een UTC-waarde DateTime
bevat die aangeeft wanneer het bericht zichtbaar is 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)
Procedure: Aanvullende opties voor het verwijderen van berichten
Er zijn twee manieren waarop u het ophalen van berichten uit een wachtrij kunt aanpassen.
- U kunt een batch berichten ontvangen.
- 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. De time-out voor onzichtbaarheid wordt 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
Procedure: De lengte van de wachtrij ophalen
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")
Procedure: Een wachtrij verwijderen
Als u een wachtrij en alle berichten erin wilt verwijderen, roept u de delete_queue()
methode aan voor het wachtrijobject.
azure_queue_service.delete_queue("test-queue")
Volgende stappen
Nu u de basisbeginselen van Queue Storage hebt geleerd, volgt u deze koppelingen voor meer informatie over complexere opslagtaken.
- Ga naar de blog van het Azure Storage-team
- Ga naar de Azure SDK voor Ruby-opslagplaats op GitHub
Voor een vergelijking tussen Azure Queue Storage die in dit artikel wordt besproken en Azure Service Bus wachtrijen die worden besproken in Service Bus-wachtrijen gebruiken, raadpleegt u Azure Queue Storage- en Service Bus-wachtrijen - vergeleken en tegengestelde