Esercizio - Aggiungere un messaggio alla coda

Completato

Ora che tutti i requisiti sono soddisfatti, è possibile scrivere codice per creare una nuova coda di archiviazione e aggiungere un messaggio. In genere, questo codice viene inserito nelle app front-end che generano i dati.

Aggiungere codice per inviare un messaggio

Il programma di esempio contiene un metodo SendMessageAsync. In questo passaggio si scriverà codice per implementare questo metodo.

  1. Aprire il file Program.cs nell'editor di codice.

  2. Individuare il metodo SendMessageAsync.

  3. Rimuovere la riga che genera un oggetto NotImplementedException.

  4. Aggiungere il codice seguente all'inizio del SendMessageAsync metodo per ottenere i dettagli del nuovo articolo dall'utente.

    // 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. Questo codice crea un oggetto NewsArticle che si vuole archiviare nella coda. A tale scopo, l'oggetto verrà prima serializzato in JSON e quindi si userà il metodo SendMessageAsync per inviare il messaggio alla coda. Aggiungere questo codice al metodo SendMessageAsyc dopo la riga che crea un'istanza di un oggetto NewsArticle.

    // 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. Infine, verranno stampate nella console alcune informazioni sull'oggetto SendReceipt incluso nella risposta dall'invio del messaggio. Per l'applicazione, questi campi sono puramente informativi, ma possono essere usati in un'applicazione effettiva per registrare o tenere traccia dei dati relativi al messaggio inviato alla coda.

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

    Al termine, il metodo SendMessageAsync dovrebbe essere simile al seguente.

    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();
    }
    

Eseguire l'applicazione

A questo momento si è pronti per compilare ed eseguire il programma per inviare il primo messaggio alla coda.

  1. Assicurarsi di salvare il file nell'editor di codice e quindi usare il dotnet build comando in Cloud Shell per compilare l'applicazione.

    dotnet build
    
  2. Eseguire l'applicazione.

    dotnet run
    
  3. Quando l'applicazione viene eseguita, scegliere l'opzione 1 per inviare un messaggio e quindi immettere un titolo e una posizione di propria scelta per inviare un messaggio alla coda. Quando viene visualizzato di nuovo il menu, è possibile usare "X" per uscire dal programma.

    Viene visualizzato l'output seguente.

    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    
    

Controllare i risultati

È possibile controllare le code nel portale di Azure tramite l'interfaccia della riga di comando di Azure o Azure PowerShell. Per questo esempio viene usata l'interfaccia della riga di comando di Azure per controllare lo stato della coda.

Eseguire il comando seguente nell'ambiente Cloud Shell.

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

Questo comando dovrebbe restituire le informazioni per il messaggio, simile al seguente:

[
  {
    "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
  }
]