Esempi di codice di Archiviazione code di Azure con librerie client Java versione 8
Questo articolo illustra gli esempi di codice che usano la versione 8 della libreria client di Archiviazione code di Azure per Java.
Il 31 marzo 2023 è stato ritirato il supporto per le librerie di Azure SDK che non sono conformi alle linee guida correnti di Azure SDK. Le nuove librerie di Azure SDK vengono aggiornate regolarmente per offrire esperienze coerenti e migliorare la postura di sicurezza. È consigliabile passare alle nuove librerie di Azure SDK per sfruttare le nuove funzionalità e gli aggiornamenti critici della sicurezza.
Anche se le librerie precedenti possono ancora essere usate oltre il 31 marzo 2023, non riceveranno più il supporto e gli aggiornamenti ufficiali da Microsoft. Per altre informazioni, vedere l'annuncio del ritiro del supporto.
Per esempi di codice che usano la versione più recente della libreria client 12.x, vedere Avvio rapido: Libreria client di Archiviazione code di Azure per Java.
Crea una coda
Aggiungere le direttive import
seguenti:
import com.microsoft.azure.storage.*;
import com.microsoft.azure.storage.queue.*;
Un CloudQueueClient
oggetto consente di ottenere oggetti di riferimento per le code. Il codice seguente crea un CloudQueueClient
oggetto che fornisce un riferimento alla coda da usare. È possibile creare la coda se non esiste già.
Nota
Esistono altri modi per creare CloudStorageAccount
oggetti. Per altre informazioni, vedere CloudStorageAccount
le informazioni di riferimento sull'SDK del client Archiviazione di Azure.
try
{
// Retrieve storage account from connection-string.
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);
// Create the queue client.
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();
// Retrieve a reference to a queue.
CloudQueue queue = queueClient.getQueueReference("myqueue");
// Create the queue if it doesn't already exist.
queue.createIfNotExists();
}
catch (Exception e)
{
// Output the stack trace.
e.printStackTrace();
}
Aggiungere un messaggio a una coda
Per inserire un messaggio in una coda esistente, creare prima di tutto un nuovo CloudQueueMessage
oggetto . Chiamare quindi il addMessage
metodo . Un CloudQueueMessage
oggetto può essere creato da una stringa (in formato UTF-8) o da una matrice di byte. L'esempio di codice seguente crea una coda (se non esiste) e inserisce il messaggio Hello, World
.
try
{
// Retrieve storage account from connection-string.
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);
// Create the queue client.
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();
// Retrieve a reference to a queue.
CloudQueue queue = queueClient.getQueueReference("myqueue");
// Create the queue if it doesn't already exist.
queue.createIfNotExists();
// Create a message and add it to the queue.
CloudQueueMessage message = new CloudQueueMessage("Hello, World");
queue.addMessage(message);
}
catch (Exception e)
{
// Output the stack trace.
e.printStackTrace();
}
Visualizzare il messaggio successivo
È possibile visualizzare il messaggio davanti a una coda senza rimuoverlo dalla coda chiamando peekMessage
.
try
{
// Retrieve storage account from connection-string.
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);
// Create the queue client.
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();
// Retrieve a reference to a queue.
CloudQueue queue = queueClient.getQueueReference("myqueue");
// Peek at the next message.
CloudQueueMessage peekedMessage = queue.peekMessage();
// Output the message value.
if (peekedMessage != null)
{
System.out.println(peekedMessage.getMessageContentAsString());
}
}
catch (Exception e)
{
// Output the stack trace.
e.printStackTrace();
}
Cambiare il contenuto di un messaggio in coda
Nell'esempio di codice seguente viene eseguita la ricerca nella coda di messaggi, viene individuato il primo contenuto del messaggio corrispondente Hello, world
a , viene modificato il contenuto del messaggio e viene chiuso.
try
{
// Retrieve storage account from connection-string.
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);
// Create the queue client.
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();
// Retrieve a reference to a queue.
CloudQueue queue = queueClient.getQueueReference("myqueue");
// The maximum number of messages that can be retrieved is 32.
final int MAX_NUMBER_OF_MESSAGES_TO_PEEK = 32;
// Loop through the messages in the queue.
for (CloudQueueMessage message : queue.retrieveMessages(MAX_NUMBER_OF_MESSAGES_TO_PEEK,1,null,null))
{
// Check for a specific string.
if (message.getMessageContentAsString().equals("Hello, World"))
{
// Modify the content of the first matching message.
message.setMessageContent("Updated contents.");
// Set it to be visible in 30 seconds.
EnumSet<MessageUpdateFields> updateFields =
EnumSet.of(MessageUpdateFields.CONTENT,
MessageUpdateFields.VISIBILITY);
// Update the message.
queue.updateMessage(message, 30, updateFields, null, null);
break;
}
}
}
catch (Exception e)
{
// Output the stack trace.
e.printStackTrace();
}
L'esempio di codice seguente aggiorna solo il primo messaggio visibile nella coda.
try
{
// Retrieve storage account from connection-string.
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);
// Create the queue client.
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();
// Retrieve a reference to a queue.
CloudQueue queue = queueClient.getQueueReference("myqueue");
// Retrieve the first visible message in the queue.
CloudQueueMessage message = queue.retrieveMessage();
if (message != null)
{
// Modify the message content.
message.setMessageContent("Updated contents.");
// Set it to be visible in 60 seconds.
EnumSet<MessageUpdateFields> updateFields =
EnumSet.of(MessageUpdateFields.CONTENT,
MessageUpdateFields.VISIBILITY);
// Update the message.
queue.updateMessage(message, 60, updateFields, null, null);
}
}
catch (Exception e)
{
// Output the stack trace.
e.printStackTrace();
}
Recuperare la lunghezza della coda
Il downloadAttributes
metodo recupera diversi valori, incluso il numero di messaggi attualmente presenti in una coda. Il conteggio è approssimativo perché i messaggi possono essere aggiunti o rimossi dopo la richiesta. Il getApproximateMessageCount
metodo restituisce l'ultimo valore recuperato dalla chiamata a downloadAttributes
, senza chiamare Archiviazione code.
try
{
// Retrieve storage account from connection-string.
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);
// Create the queue client.
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();
// Retrieve a reference to a queue.
CloudQueue queue = queueClient.getQueueReference("myqueue");
// Download the approximate message count from the server.
queue.downloadAttributes();
// Retrieve the newly cached approximate message count.
long cachedMessageCount = queue.getApproximateMessageCount();
// Display the queue length.
System.out.println(String.format("Queue length: %d", cachedMessageCount));
}
catch (Exception e)
{
// Output the stack trace.
e.printStackTrace();
}
Rimuovere il messaggio successivo dalla coda
Il codice consente di rimuovere un messaggio da una coda in due passaggi. Quando si chiama retrieveMessage
, viene visualizzato il messaggio successivo in una coda. Un messaggio restituito da retrieveMessage
diventa invisibile a qualsiasi altro elemento di codice che legge i messaggi di questa coda. Per impostazione predefinita, questo messaggio rimane invisibile per 30 secondi. Per completare la rimozione del messaggio dalla coda, è necessario chiamare anche deleteMessage
. Se il codice non riesce a elaborare un messaggio, questo processo in due passaggi garantisce che sia possibile ottenere lo stesso messaggio e riprovare. Il codice chiama deleteMessage
subito dopo l'elaborazione del messaggio.
try
{
// Retrieve storage account from connection-string.
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);
// Create the queue client.
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();
// Retrieve a reference to a queue.
CloudQueue queue = queueClient.getQueueReference("myqueue");
// Retrieve the first visible message in the queue.
CloudQueueMessage retrievedMessage = queue.retrieveMessage();
if (retrievedMessage != null)
{
// Process the message in less than 30 seconds, and then delete the message.
queue.deleteMessage(retrievedMessage);
}
}
catch (Exception e)
{
// Output the stack trace.
e.printStackTrace();
}
Opzioni aggiuntive per rimuovere i messaggi dalla coda
Nell'esempio di codice seguente viene usato il metodo retrieveMessages
per recuperare 20 messaggi con una sola chiamata. Ogni messaggio viene poi elaborato con un ciclo for
. Per ogni messaggio, inoltre, il timeout di invisibilità viene impostato su cinque minuti (300 secondi). Il timeout viene avviato per tutti i messaggi contemporaneamente. Quando sono trascorsi cinque minuti dalla chiamata a retrieveMessages
, tutti i messaggi non eliminati diventano nuovamente visibili.
try
{
// Retrieve storage account from connection-string.
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);
// Create the queue client.
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();
// Retrieve a reference to a queue.
CloudQueue queue = queueClient.getQueueReference("myqueue");
// Retrieve 20 messages from the queue with a visibility timeout of 300 seconds.
for (CloudQueueMessage message : queue.retrieveMessages(20, 300, null, null)) {
// Do processing for all messages in less than 5 minutes,
// deleting each message after processing.
queue.deleteMessage(message);
}
}
catch (Exception e)
{
// Output the stack trace.
e.printStackTrace();
}
Elencare le code
Per ottenere un elenco delle code correnti, chiamare il CloudQueueClient.listQueues()
metodo , che restituisce una raccolta di CloudQueue
oggetti .
try
{
// Retrieve storage account from connection-string.
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);
// Create the queue client.
CloudQueueClient queueClient =
storageAccount.createCloudQueueClient();
// Loop through the collection of queues.
for (CloudQueue queue : queueClient.listQueues())
{
// Output each queue name.
System.out.println(queue.getName());
}
}
catch (Exception e)
{
// Output the stack trace.
e.printStackTrace();
}
Eliminare una coda
Per eliminare una coda e tutti i messaggi contenuti, chiamare il deleteIfExists
metodo sull'oggetto CloudQueue
.
try
{
// Retrieve storage account from connection-string.
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);
// Create the queue client.
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();
// Retrieve a reference to a queue.
CloudQueue queue = queueClient.getQueueReference("myqueue");
// Delete the queue if it exists.
queue.deleteIfExists();
}
catch (Exception e)
{
// Output the stack trace.
e.printStackTrace();
}