Ejercicio: Adición de un mensaje a la cola
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.
Abra el archivo
Program.cs
en el editor de código.Busque el método
SendMessageAsync
.Quite la línea que inicia una excepción
NotImplementedException
.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 };
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étodoSendMessageAsyc
después de la línea en la que se crea una instancia de un objetoNewsArticle
.// Build and send the message to the queue string message = JsonSerializer.Serialize(article); Response<SendReceipt> response = await queueClient.SendMessageAsync(message); SendReceipt sendReceipt = response.Value;
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.
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
Ejecute la aplicación.
dotnet run
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
}
]