Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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çiş yapmanızı öneririz.
Eski kitaplıklar 31 Mart 2023'ten sonra da kullanılabilir olsa da artık Microsoft'tan resmi destek ve güncelleştirmeler almayacaktır. Daha fazla bilgi için destek hizmetlerinin kullanımdan kaldırılma duyurusu kısmına bakın.
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ığı.
Kuyruk oluştur
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 onu oluşturabilirsiniz.
Not
Nesne oluşturmanın CloudStorageAccount başka yolları da vardır. Daha fazla bilgi için CloudStorageAccount bölümüne, Azure Depolama istemci SDK'sı başvurusu kısmından bakabilirsiniz.
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
Mevcut bir kuyruğa ileti eklemek için önce yeni bir CloudQueueMessage oluşturun. Ardından addMessage yöntemini çağırın. bir CloudQueueMessage dizeden (UTF-8 biçiminde) veya bayt dizisinden oluşturulabilir. Aşağıdaki kod örneği bir kuyruk oluşturur (eğer yoksa) ve iletisini Hello, World ekler.
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
peekMessage çağrı yaparak, kuyruğun önündeki mesaja göz atabilir ve onu kuyruktan kaldırmadan bırakabilirsiniz.
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, ileti 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ğunu al.
yöntemi, downloadAttributes şu anda kuyrukta olan iletilerin sayısı da dahil olmak üzere çeşitli değerler alır. İletiler isteğinizden sonra eklenebileceği veya kaldırılabildiği için sayı yaklaşıktır. Metot, getApproximateMessageCount ile downloadAttributes çağrı yapılarak alınan son değeri, Kuyruk Depolama'yı aramadan 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 sıralama
Kodunuz iki adımda kuyruktan bir iletiyi çıkarır.
retrieveMessage'yi aradığınızda kuyruktaki bir sonraki mesajı 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 ayrıca deleteMessage çağrısı yapmanız gerekir. 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();
}
Mesajları kuyruktan çıkarmak için ek seçenekler
Aşağıdaki kod örneği, bir çağrıda retrieveMessages 20 ileti almak için yöntemini kullanır. Ardından bir döngü kullanarak for her iletiyi işler. Ayrıca, her ileti için görünmezlik zaman aşımını beş dakika (300 saniye) olarak ayarlar. Zaman aşımı tüm iletiler için aynı anda başlar. çağrısından retrieveMessagesbu yana 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 CloudQueueClient.listQueues() yöntemini çağırın, bu yöntem CloudQueue nesne koleksiyonunu döndürür.
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 CloudQueue nesnesinde deleteIfExists yöntemini çağırın.
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();
}