Ejercicio: Adición de un mensaje a la cola

Completado

Una vez establecidos todos los requisitos, puede escribir código que cree una cola de almacenamiento y agregue un mensaje. Este código se colocaría normalmente en las aplicaciones de front-end que generan los datos.

Adición de código para enviar un mensaje

El programa de ejemplo contiene un método SendMessageAsync. En este paso, escribirá código para implementar este método.

  1. Abra el archivo Program.cs en el editor de código.

  2. Busque el método SendMessageAsync.

  3. Quite la línea que inicia una excepción NotImplementedException.

  4. Agregue el código siguiente al principio del método SendMessageAsync para obtener los detalles del nuevo artículo del usuario.

    // 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. Este código crea un objeto NewsArticle que se va a almacenar en la cola. Para ello, primero se serializa el objeto en código JSON y, después, se usa el método SendMessageAsync para enviar el mensaje a la cola. Agregue este código al método SendMessageAsyc después de la línea en la que se crea una instancia de un objeto 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. Por último, se imprimirá en la consola información sobre el objeto SendReceipt que se ha incluido en la respuesta al enviar el mensaje. Para la aplicación, estos campos son meramente informativos, pero se podrían usar en una aplicación real para registrar o realizar el seguimiento de los datos sobre el mensaje enviado a la cola.

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

    Cuando se complete, el método SendMessageAsync debe tener el siguiente aspecto.

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

Ejecución de la aplicación

Ya está listo para compilar y ejecutar el programa para enviar el primer mensaje a la cola.

  1. Asegúrese de que ha guardado el archivo en el editor de código y, después, use el comando dotnet build en Cloud Shell para compilar la aplicación.

    dotnet build
    
  2. Ejecute la aplicación.

    dotnet run
    
  3. Cuando se ejecute la aplicación, elija la opción 1 para enviar un mensaje y, después, introduzca el encabezado y la ubicación que prefiera para enviar un mensaje a la cola. Cuando vuelva a aparecer el menú, puede usar "X" para salir del programa.

    Debería ver la siguiente salida.

    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    
    

Comprobación de los resultados

Puede comprobar las colas en Azure Portal mediante la CLI de Azure o Azure PowerShell. En este ejemplo, se usa la CLI de Azure para comprobar el estado de la cola.

Ejecute el comando siguiente en el entorno de Cloud Shell.

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

Este comando debería generar la información del mensaje, que tiene un aspecto similar al siguiente:

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