Übung: Hinzufügen einer Nachricht zur Warteschlange

Abgeschlossen

Nun, da alle Anforderungen erfüllt sind, können Sie Code schreiben, mit dem eine neue Speicherwarteschlange erstellt und eine Nachricht hinzugefügt wird. Wir fügen diesen Code üblicherweise in unsere Front-End-Anwendungen ein, die die Daten generieren.

Hinzufügen von Code zum Senden einer Nachricht

Das Beispielprogramm enthält eine SendMessageAsync-Methode. In diesem Schritt schreiben Sie Code, um diese Methode zu implementieren.

  1. Öffnen Sie die Datei Program.cs in Ihrem Code-Editor.

  2. Suchen Sie nach der SendMessageAsync-Methode.

  3. Entfernen Sie die Zeile, die eine NotImplementedException auslöst.

  4. Fügen Sie den folgenden Code am Anfang der SendMessageAsync-Methode hinzu, um die Details des neuen Artikels von Benutzer*innen abzurufen.

    // Get input from user
    Console.WriteLine("Enter headline: ");
    string headline = Console.ReadLine();
    Console.WriteLine("Enter location: ");
    string location = Console.ReadLine();
    NewsArticle article = new NewsArticle() { Headline = headline, Location = location };
    
  5. Dieser Code erstellt ein NewsArticle-Objekt, das wir in unserer Warteschlange speichern möchten. Dazu serialisieren Sie das Objekt in JSON und verwenden dann die SendMessageAsync-Methode, um die Nachricht an unsere Warteschlange zu senden. Fügen Sie diesen Code der SendMessageAsyc-Methode nach der Zeile hinzu, die ein NewsArticle-Objekt instanziiert.

    // Build and send the message to the queue
    string message = JsonSerializer.Serialize(article);
    Response<SendReceipt> response = await queueClient.SendMessageAsync(message);
    SendReceipt sendReceipt = response.Value;
    
  6. Schließlich geben wir in der Konsole einige Informationen zu SendReceipt aus, die beim Senden der Nachricht in der Antwort enthalten waren. Für diese Anwendung gibt es diese Felder rein zu Informationszwecken. Sie können aber in einer tatsächlichen Anwendung verwendet werden, um Daten über die an die Warteschlange gesendete Nachricht zu protokollieren oder nachzuverfolgen.

    Console.WriteLine($"Message sent. Message id={sendReceipt.MessageId}  Expiration time={sendReceipt.ExpirationTime}");
    Console.WriteLine();
    

    Die SendMessageAsync-Methode sollte nach Abschluss wie folgt aussehen.

    static async Task SendMessageAsync(QueueClient queueClient)
    {
        // Get input from user
        Console.WriteLine("Enter headline: ");
        string headline = Console.ReadLine();
        Console.WriteLine("Enter location: ");
        string location = Console.ReadLine();
        NewsArticle article = new NewsArticle() { Headline = headline, Location = location };
    
        // Build and send the message to the queue
        string message = JsonSerializer.Serialize(article);
        Response<SendReceipt> response = await queueClient.SendMessageAsync(message);
        SendReceipt sendReceipt = response.Value;
    
        // Print out the send receipt
        Console.WriteLine($"Message sent. Message id={sendReceipt.MessageId}  Expiration time={sendReceipt.ExpirationTime}");
        Console.WriteLine();
    }
    

Ausführen der Anwendung

Sie können nun das Programm erstellen und ausführen, um Ihre erste Nachricht an die Warteschlange zu senden.

  1. Stellen Sie sicher, dass Sie die Datei im Code-Editor speichern, und verwenden Sie dann den dotnet build-Befehl in Cloud Shell, um die Anwendung zu erstellen.

    dotnet build
    
  2. Führen Sie die Anwendung aus.

    dotnet run
    
  3. Wenn die Anwendung ausgeführt wird, wählen Sie Option 1 aus, um eine Nachricht zu senden, und geben Sie dann eine Überschrift und einen Speicherort Ihrer Wahl ein, um eine Nachricht an die Warteschlange zu senden. Wenn das Menü erneut angezeigt wird, können Sie „X“ verwenden, um das Programm zu beenden.

    Die folgende Ausgabe wird angezeigt.

    What operation would you like to perform?
      1 - Send message
      2 - Peek at the next message
      3 - Receive message
      X - Exit program
    1
    
    Enter headline:
    World leaders to meet at economic summit
    Enter location:
    Paris, France
    Message sent. Message id=638160c9-f136-49b3-a06c-d2a45739fc4e  Expiration time=10/14/2021 3:49:42 PM +00:00
    
    What operation would you like to perform?
      1 - Send message
      2 - Peek at the next message
      3 - Receive message
      X - Exit program
    X    
    

Überprüfen der Ergebnisse

Sie können Warteschlangen im Azure-Portal mit der Azure CLI oder mit Azure PowerShell überprüfen. In diesem Beispiel wird die Azure CLI verwendet, um den Status der Warteschlange zu überprüfen.

Führen Sie den folgenden Befehl in der Cloud Shell-Umgebung aus.

az storage message peek --queue-name newsqueue --connection-string $MY_STORAGE_CONNECTION_STRING 

Dieser Befehl sollte die Informationen für Ihre Nachricht ausgeben, die ungefähr wie folgt aussieht:

[
  {
    "content": "{\"Headline\":\"World leaders to meet at economic summit\",\"Location\":\"Paris, France\"}",
    "dequeueCount": 0,
    "expirationTime": "2021-10-14T15:49:42+00:00",
    "id": "638160c9-f136-49b3-a06c-d2a45739fc4e",
    "insertionTime": "2021-10-07T15:49:42+00:00",
    "popReceipt": null,
    "timeNextVisible": null
  }
]