Esercizio - Aggiungere un messaggio alla coda
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.
Aprire il file
Program.cs
nell'editor di codice.Individuare il metodo
SendMessageAsync
.Rimuovere la riga che genera un oggetto
NotImplementedException
.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 };
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 metodoSendMessageAsyc
dopo la riga che crea un'istanza di un oggettoNewsArticle
.// Build and send the message to the queue string message = JsonSerializer.Serialize(article); Response<SendReceipt> response = await queueClient.SendMessageAsync(message); SendReceipt sendReceipt = response.Value;
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.
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
Eseguire l'applicazione.
dotnet run
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
}
]