Übung: Identifizieren einer Warteschlange

Abgeschlossen

Erstellen Sie eine Client-App für die Zusammenarbeit mit einer Warteschlange. Anschließend fügen wir dem Code unsere Verbindungszeichenfolge hinzu und erstellen ein QueueClient-Objekt und dann die Warteschlange.

Hinweis

Sie können die Clientanwendung entweder auf Ihrem lokalen Computer erstellen, sofern dort .NET Core installiert ist, oder aber direkt in der Cloud Shell-Umgebung.

Klonen und Öffnen der Startanwendung

In dieser Lerneinheit erstellen Sie eine Konsolenanwendung, um mit der Azure Storage-Warteschlange zu interagieren, um Nachrichten zu senden und zu empfangen. Das GitHub-Repository, das diesem Modul zugeordnet ist, enthält eine Startversion der Anwendung, die Sie erstellen.

  1. Führen Sie zuerst das Klonen der Lösung durch. Führen Sie in Azure Cloud Shell den folgenden Befehl aus.

    cd ~
    git clone https://github.com/MicrosoftDocs/mslearn-communicate-with-storage-queues.git
    
  2. Wechseln Sie als Nächstes in den Startordner, und öffnen Sie den Cloud Shell-Editor.

    cd ~/mslearn-communicate-with-storage-queues/start
    code .
    

NuGet-Paket für Azure.Storage.Queues

Um über eine .NET-Anwendung auf Speicherwarteschlangen zuzugreifen, stellt das Azure SDK für .NET das Azure.Storage.Queues-Paket auf NuGet bereit.

Das Azure.Storage.Queues-Paket ist bereits in der Startanwendung installiert. Um Azure Storage-Warteschlangen aus einer Ihrer Anwendungen zu verwenden, installieren Sie dieses Paket aus NuGet.

Abrufen der Verbindungszeichenfolge

Ihre Anwendung benötigt eine Verbindungszeichenfolge, um eine Verbindung mit Ihrer Speicherwarteschlange in Azure herstellen zu können. Die Verbindungszeichenfolge ist im Azure-Portal im Abschnitt Sicherheit+Netztechnologie > Zugriffsschlüssel auf der Zusammenfassungsseite des Speicherkontos verfügbar oder kann mithilfe der Azure CLI oder Azure PowerShell abgerufen werden.

Im folgenden Code wird die Azure CLI verwendet, um die Speicherverbindungszeichenfolge abzurufen und um sie in einer Umgebungsvariablen einzufügen. Die Anwendung liest diese Umgebungsvariable, um die Verbindungszeichenfolge abzurufen und eine Verbindung mit der Speicherwarteschlange herzustellen. Ersetzen Sie im folgenden Befehl unbedingt den Namen Ihres Speicherkontos.

export MY_STORAGE_CONNECTION_STRING=`az storage account show-connection-string -g <rgn>[sandbox resource group name]</rgn> --output tsv -n <storage account name>`

Sie können überprüfen, ob in Ihrer Umgebungsvariablen eine Verbindungszeichenfolge festgelegt ist, indem Sie den folgenden Befehl ausführen, um die Verbindungszeichenfolge anzuzeigen:

echo $MY_STORAGE_CONNECTION_STRING

Hinzufügen von Code zum Erstellen einer QueueClient-Klasse

Die QueueClient-Klasse verwaltet die Interaktionen mit einer Speicherwarteschlange. Die QueueClient-Klasse kann zum Erstellen einer Warteschlange sowie zum Senden und Empfangen von Nachrichten aus der Warteschlange verwendet werden.

Um ein QueueClient-Objekt zu erstellen, benötigen Sie sowohl die Speicherverbindungszeichenfolge als auch den Namen der Warteschlange, die von Ihrer Anwendung verwendet wird. In dieser Beispielanwendung wird die Verbindungszeichenfolge aus einer Umgebungsvariablen gelesen.

  1. Geben Sie code . im Terminal ein, um den Onlinecode-Editor zu öffnen. Wenn Sie alleine arbeiten, können Sie alternativ die IDE Ihrer Wahl verwenden.

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

  3. Fügen Sie am Anfang der Main-Methode den folgenden Code hinzu.

    string connectionString = Environment.GetEnvironmentVariable("MY_STORAGE_CONNECTION_STRING");
    QueueClient queueClient = new QueueClient(connectionString, "newsqueue");
    

Erstellen Ihrer Speicherkontowarteschlange

Bevor Sie Nachrichten aus Ihrer Warteschlange senden oder empfangen können, müssen Sie die Warteschlange selbst erstellen. Die Warteschlange kann über das Azure-Portal, die Azure CLI, Azure PowerShell oder im Code erstellt werden. Für unsere Beispielanwendung erstellen wir die Warteschlange aus Code.

Die CreateIfNotExistsAsync-Methode für die QueueClient-Klasse wird verwendet, um eine Warteschlange zu erstellen. Diese Methode überprüft zunächst, ob die benannte Warteschlange für das QueueClient-Objekt vorhanden ist, und erstellt sie, falls dies nicht der Fall ist.

Fügen Sie der Main-Methode Ihrer Program.cs-Datei direkt nach der Zeile, die das QueueClient-Objekt erstellt, die folgende Codezeile hinzu. Der QueueClient enthält eine CreateIfNotExistsAsync-Methode.

await queueClient.CreateIfNotExistsAsync();

Die vollständige Main-Methode sollte nun wie im folgenden Beispiel aussehen:

static async Task Main(string[] args)
{
    // Add code to create QueueClient and Storage Queue Here
    string connectionString = Environment.GetEnvironmentVariable("MY_STORAGE_CONNECTION_STRING");
    QueueClient queueClient = new QueueClient(connectionString, "newsqueue");
    await queueClient.CreateIfNotExistsAsync();

    bool exitProgram = false;
    while (exitProgram == false)
    {
        Console.WriteLine("What operation would you like to perform?");
        Console.WriteLine("  1 - Send message");
        Console.WriteLine("  2 - Peek at the next message");
        Console.WriteLine("  3 - Receive message");
        Console.WriteLine("  X - Exit program");

        ConsoleKeyInfo option = Console.ReadKey();
        Console.WriteLine();  // ReadKey does not got the the next line, so this does
        Console.WriteLine();  // Provide some whitespace between the menu and the action

        if (option.KeyChar == '1')
            await SendMessageAsync(queueClient);
        else if (option.KeyChar == '2')
            await PeekMessageAsync(queueClient);
        else if (option.KeyChar == '3')
            await ReceiveMessageAsync(queueClient);
        else if (option.KeyChar == 'X')
            exitProgram = true;
        else
            Console.WriteLine("invalid choice");
    }
}

Da die Anwendung nun eine Verbindung mit Azure herstellen und eine Speicherwarteschlange erstellen kann, können wir jetzt Code implementieren, um Nachrichten aus der Warteschlange zu senden bzw. zu empfangen.