Eine App benötigt einfache Hintergrundnachrichten? Storage Queue erstellen und testen

Veröffentlicht am:

CloudTrips muss eine schnelle Webanfrage von langsamer Hintergrundarbeit entkoppeln. Die Web-App kann eine kleine Nachricht in Azure Queue Storage ablegen und sofort antworten; ein Worker liest die Nachricht und erledigt die Arbeit später.

Web-App → Queue background-work → Worker

Die Queue speichert Nachrichten, nicht die Dateien oder großen Payloads selbst. Eine Nachricht darf bis zu 64 KiB enthalten. Speichere für große Arbeitspakete die Daten in Blob Storage und lege nur deren Bezeichner oder URL in die Queue-Nachricht.

Storage Account erstellen

Suche nach Storage accounts, wähle Create und trage ein:

Subscription: CloudTrips TEST
Resource group: Create new → rg-cloudtrips-queue-test-weu
Storage account name: stctqueuedmytrotestweu
Region: West Europe
Primary service: Other (tables and queues)
Performance: Standard
Redundancy: Locally-redundant storage (LRS)

Belasse Enable storage account key access: Enabled, damit das Portal die Queuedaten für dieses Lab mit den Account-Credentials verwalten kann. Wähle Review + create und Create.

Storage-Account-Übersicht für das eigenständige Queue-Storage-Lab

Queue erstellen

Öffne den Account und wähle Data storage > Queues > + Queue. Trage ein:

Name: background-work

Queue-Namen bestehen aus Kleinbuchstaben und dürfen Buchstaben, Zahlen sowie einzelne Bindestriche enthalten. Die Queue ist ein geordneter Rückstau zwischen Produzenten und Konsumenten. Anwendungen dürfen bei Wiederholungen oder mehreren parallelen Workern jedoch keine vollkommen strikte FIFO-Verarbeitung erwarten.

Hintergrundnachricht senden

Öffne background-work und wähle + Add message. Trage dieses lesbare JSON als Nachrichtentext ein:

{"jobId":"trip-1001","action":"generate-report","source":"cloudtrips"}

Konfiguriere:

Expires in: 1 day
Encode message body in Base64: Disabled

Base64 ist für Binärinhalte oder Clients nützlich, die codierte Nachrichten benötigen, verschlüsselt die Daten jedoch nicht. Dieses JSON kann für das Lab im Klartext bleiben. Füge die Nachricht hinzu.

Die Queue-Ansicht zeigt Message ID, Einfüge- und Ablaufzeit, Inhalt sowie Dequeue-Zähler. Das bloße Anzeigen der Liste verarbeitet oder entfernt die Nachricht nicht; es entspricht dem Prüfen der ausstehenden Arbeit.

Queue background-work mit ausstehender generate-report-JSON-Nachricht und ihren Eigenschaften

Nachricht verarbeiten

Wähle Dequeue message. Das Portal entfernt die älteste sichtbare Nachricht aus der Queue und simuliert damit einen Worker, der sie abgeschlossen hat. Aktualisiere die Ansicht und bestätige, dass die Queue leer ist.

Leere Queue background-work nach dem Entfernen der Testnachricht

In einer echten Anwendung sind Empfang und Löschen getrennte Vorgänge:

  1. Ein Worker empfängt eine Nachricht und macht sie vorübergehend unsichtbar.
  2. Der Worker führt die angeforderte Aktion aus.
  3. Bei Erfolg löscht er sie mit Message ID und Pop Receipt.
  4. Schlägt der Worker vor dem Löschen fehl, endet das Visibility Timeout und die Nachricht wird für einen neuen Versuch wieder sichtbar.

Queue Storage bietet At-least-once Delivery, sodass eine Nachricht gelegentlich mehrmals verarbeitet werden kann. Ein Worker muss deshalb idempotent sein: Er sollte beispielsweise erkennen, dass trip-1001 bereits abgeschlossen wurde, statt denselben Bericht zweimal zu erzeugen. Für Workflows mit Transaktionen, Sessions, strikter Reihenfolge oder Dead-Letter Queues ist Azure Service Bus normalerweise der passendere Messagingdienst.

Bereinigen

Lösche die eigenständige Ressourcengruppe:

az group delete \
  --name rg-cloudtrips-queue-test-weu \
  --yes

Bestätige, dass sie nicht mehr existiert:

az group exists --name rg-cloudtrips-queue-test-weu

Erwartetes Ergebnis: false.