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 CloudQueueMessage
bir 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, 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
çağrısı peekMessage
yaparak 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, world
ilk 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ı downloadAttributes
tarafı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ı retrieveMessage
yaptığı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 deleteMessage
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();
}
İ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();
}