Share via


Azure Queue Storage-codevoorbeelden met behulp van Java versie 8-clientbibliotheken

Dit artikel bevat codevoorbeelden die gebruikmaken van versie 8 van de Azure Queue Storage-clientbibliotheek voor Java.

Op 31 maart 2023 hebben we de ondersteuning voor Azure SDK-bibliotheken buiten gebruik gesteld die niet voldoen aan de huidige Azure SDK-richtlijnen. De nieuwe Azure SDK-bibliotheken worden regelmatig bijgewerkt om consistente ervaringen te stimuleren en je beveiligingspostuur te versterken. Het is raadzaam om over te stappen op de nieuwe Azure SDK-bibliotheken om te profiteren van de nieuwe mogelijkheden en essentiële beveiligingsupdates.

Hoewel de oudere bibliotheken na 31 maart 2023 nog steeds kunnen worden gebruikt, ontvangen ze geen officiële ondersteuning en updates meer van Microsoft. Zie de aankondiging van de buitengebruikstelling van de ondersteuning voor meer informatie.

Zie quickstart: Azure Queue Storage-clientbibliotheek voor Java voor codevoorbeelden met de nieuwste versie van versie 12.x.

Een wachtrij maken

Voeg de volgende import-instructies toe:

import com.microsoft.azure.storage.*;
import com.microsoft.azure.storage.queue.*;

Met een CloudQueueClient object kunt u referentieobjecten voor wachtrijen ophalen. Met de volgende code wordt een CloudQueueClient object gemaakt dat verwijst naar de wachtrij die u wilt gebruiken. U kunt de wachtrij maken als deze niet bestaat.

Notitie

Er zijn andere manieren om objecten te maken CloudStorageAccount . Zie de naslaginformatie over de SDK voor de Azure Storage-client voor meer informatieCloudStorageAccount.)

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

Een bericht toevoegen aan een wachtrij

Als u een bericht wilt invoegen in een bestaande wachtrij, maakt u eerst een nieuw CloudQueueMessagebericht. Roep vervolgens de addMessage methode aan. Een CloudQueueMessage kan worden gemaakt op basis van een tekenreeks (in UTF-8-indeling) of een bytematrix. In het volgende codevoorbeeld wordt een wachtrij gemaakt (als deze niet bestaat) en wordt het bericht Hello, Worldingevoegd.

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

Bekijken van het volgende bericht

U kunt het bericht vooraan in een wachtrij bekijken zonder het uit de wachtrij te verwijderen door het aan te roepen 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();
}

De inhoud van een bericht in de wachtrij wijzigen

Het volgende codevoorbeeld doorzoekt de wachtrij met berichten, zoekt de eerste berichtinhoud die overeenkomt Hello, worldmet, wijzigt de inhoud van het bericht en sluit af.

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

In het volgende codevoorbeeld wordt alleen het eerste zichtbare bericht in de wachtrij bijgewerkt.

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

Lengte van de wachtrij ophalen

Met de downloadAttributes methode worden verschillende waarden opgehaald, waaronder het aantal berichten dat zich momenteel in een wachtrij bevindt. Het aantal is alleen bij benadering omdat berichten na uw aanvraag kunnen worden toegevoegd of verwijderd. De getApproximateMessageCount methode retourneert de laatste waarde die is opgehaald door de aanroep naar, zonder Queue Storage aan te downloadAttributesroepen.

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

Het volgende bericht uit de wachtrij verwijderen

Uw code verwijdert in twee stappen een bericht uit een wachtrij. Wanneer u belt retrieveMessage, krijgt u het volgende bericht in een wachtrij. Een bericht dat wordt geretourneerd, retrieveMessage wordt onzichtbaar voor alle andere code die berichten uit deze wachtrij leest. Standaard blijft het bericht onzichtbaar gedurende 30 seconden. Als u het bericht uit de wachtrij wilt verwijderen, moet u ook aanroepen deleteMessage. Als uw code een bericht niet kan verwerken, zorgt dit proces in twee stappen ervoor dat u hetzelfde bericht kunt krijgen en het opnieuw kunt proberen. Uw code roept deleteMessage direct na het verwerken van het bericht aan.

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

Aanvullende opties voor het verwijderen van berichten

In het volgende codevoorbeeld wordt de retrieveMessages methode gebruikt om 20 berichten in één aanroep op te halen. Vervolgens wordt elk bericht verwerkt met behulp van een for lus. Ook wordt de time-out voor onzichtbaarheid ingesteld op vijf minuten (300 seconden) voor elk bericht. De time-out begint voor alle berichten tegelijk. Wanneer vijf minuten zijn verstreken sinds de aanroep, retrieveMessagesworden alle berichten die niet zijn verwijderd, weer zichtbaar.

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

De wachtrijen weergeven

Als u een lijst met de huidige wachtrijen wilt ophalen, roept u de CloudQueueClient.listQueues() methode aan, die een verzameling CloudQueue objecten retourneert.

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

Een wachtrij verwijderen

Als u een wachtrij en alle berichten in de wachtrij wilt verwijderen, roept u de deleteIfExists methode voor het CloudQueue object aan.

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