Share via


Java sürüm 8 istemci kitaplıklarını kullanan Azure Kuyruk Depolama kod örnekleri

Bu makalede, Java için Azure Kuyruk Depolama istemci kitaplığının 8. sürümünü kullanan kod örnekleri gösterilmektedir.

31 Mart 2023'te , geçerli Azure SDK yönergelerine uymayan Azure SDK kitaplıkları desteğini kullanımdan kaldırdık. Yeni Azure SDK kitaplıkları, tutarlı deneyimler sağlamak ve güvenlik duruşunuzu güçlendirmek için düzenli olarak güncelleştirilir. Yeni özelliklerden ve kritik güvenlik güncelleştirmelerinden yararlanmak için yeni Azure SDK kitaplıklarına geçmeniz önerilir.

Eski kitaplıklar 31 Mart 2023'ten sonra da kullanılabilse de artık Microsoft'tan resmi destek ve güncelleştirme almayacaktır. Daha fazla bilgi için bkz. destek kullanımdan kaldırma duyurusu.

En son sürüm 12.x istemci kitaplığı sürümünü kullanan kod örnekleri için bkz . Hızlı Başlangıç: Java için Azure Kuyruk Depolama istemci kitaplığı.

Bir kuyruk oluşturma

Aşağıdaki import yönergeleri ekleyin:

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

Nesne CloudQueueClient , kuyruklar için başvuru nesneleri almanıza olanak tanır. Aşağıdaki kod, kullanmak istediğiniz kuyruğa başvuru sağlayan bir nesne oluşturur CloudQueueClient . Kuyruk yoksa oluşturabilirsiniz.

Not

Nesne oluşturmanın CloudStorageAccount başka yolları da vardır. Daha fazla bilgi için bkz CloudStorageAccount . Azure Depolama istemci SDK'sı başvurusu.)

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

Kuyruğa ileti ekleme

Var olan kuyruğa ileti eklemek için önce yeni CloudQueueMessagebir oluşturun. Ardından yöntemini çağırın addMessage . bir CloudQueueMessage dizeden (UTF-8 biçiminde) veya bayt dizisinden oluşturulabilir. Aşağıdaki kod örneği bir kuyruk oluşturur (yoksa) ve iletisini Hello, Worldekler.

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

Sonraki iletiye gözatın

çağrısı peekMessageyaparak kuyruktan kaldırmadan kuyruğun önündeki iletiye göz atabilirsiniz.

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

Kuyruğa alınan iletinin içeriğini değiştirme

Aşağıdaki kod örneği, iletilerin kuyruğunda arama yapar, ile eşleşen Hello, worldilk ileti içeriğini bulur, ileti içeriğini değiştirir ve çıkar.

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

Aşağıdaki kod örneği, kuyruktaki yalnızca ilk görünür iletiyi güncelleştirir.

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

Kuyruk uzunluğu alma

yöntemi, downloadAttributes şu anda kuyrukta olan iletilerin sayısı da dahil olmak üzere çeşitli değerleri alır. İletiler isteğinizden sonra eklenebildiği veya kaldırılabildiği için bu sayı yaklaşıktır. yöntemi, getApproximateMessageCount Kuyruk Depolama'yı çağırmadan çağrısı downloadAttributestarafından alınan son değeri döndürür.

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

Sonraki iletiyi dequeue etme

Kodunuz iki adımda kuyruktaki bir iletiyi sıralar. çağrısı retrieveMessageyaptığınızda kuyruktaki bir sonraki iletiyi alırsınız. tarafından retrieveMessage döndürülen bir ileti, bu kuyruktan gelen iletileri okuyan diğer kodlar için görünmez hale gelir. Varsayılan olarak bu ileti 30 saniye görünmez kalır. kuyruktan iletiyi kaldırmayı tamamlamak için çağrısı da deleteMessagegerekir. Kodunuz bir iletiyi işleyemezse, bu iki adımlı işlem aynı iletiyi alıp yeniden denemenizi sağlar. kodunuz, ileti işlendikten hemen sonra çağrır deleteMessage .

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

İletileri sıralamak için ek seçenekler

Aşağıdaki kod örneği, tek bir çağrıda retrieveMessages 20 ileti almak için yöntemini kullanır. Ardından her iletiyi bir for döngü kullanarak işler. Ayrıca her ileti için görünmezlik zaman aşımını beş dakika (300 saniye) olarak ayarlar. Tüm iletiler için zaman aşımı aynı anda başlar. çağrısının retrieveMessagesüzerinden beş dakika geçtiğinde, silinmeyen tüm iletiler yeniden görünür hale gelir.

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

Kuyrukları listeleme

Geçerli kuyrukların listesini almak için bir nesne koleksiyonu döndüren yöntemini çağırın CloudQueueClient.listQueues()CloudQueue .

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

Bir kuyruk silme

Bir kuyruğu ve içindeki tüm iletileri silmek için nesnesinde deleteIfExists yöntemini çağırın 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();
}