إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
تعرض هذه المقالة نماذج التعليمات البرمجية التي تستخدم الإصدار 8 من مكتبة عميل Azure Queue Storage ل Java.
في 31 مارس 2023، قمنا بإيقاف الدعم لمكتبات Azure SDK التي لا تتوافق مع إرشادات Azure SDK الحالية. يتم تحديث مكتبات Azure SDK الجديدة بانتظام لدفع تجارب متسقة وتعزيز وضع الأمان الخاص بك. يوصى بالانتقال إلى مكتبات Azure SDK الجديدة للاستفادة من الإمكانات الجديدة وتحديثات الأمان الهامة.
على الرغم من أنه لا يزال من الممكن استخدام المكتبات القديمة بعد 31 مارس 2023، إلا أنها لن تتلقى بعد ذلك الدعم والتحديثات الرسمية من Microsoft. لمزيد من المعلومات، راجع إعلان إيقاف الدعم.
للحصول على نماذج التعليمات البرمجية باستخدام أحدث إصدار من مكتبة العميل 12.x، راجع التشغيل السريع: مكتبة عميل Azure Queue Storage ل Java.
إنشاء قائمة انتظار
أضِف توجيهات import التالية:
import com.microsoft.azure.storage.*;
import com.microsoft.azure.storage.queue.*;
يتيح لك عنصر CloudQueueClient الحصول على عناصر مرجعية لقوائم الانتظار. تقوم التعليمة البرمجية التالية بإنشاء كائن CloudQueueClient يوفر مرجعًا إلى قائمة الانتظار التي تريد استخدامها. يمكنك إنشاء قائمة الانتظار إذا لم تكن موجودة.
إشعار
هناك طرق أخرى لإنشاء CloudStorageAccount الكائنات. لمزيد من المعلومات، راجع CloudStorageAccount في مرجع SDK عميل تخزين 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();
}
إضافة رسالة إلى قائمة الانتظار
لإدراج رسالة في قائمة انتظار موجودة، قم أولاً بإنشاء CloudQueueMessage جديدة. بعد ذلك، قم باستدعاء أسلوب addMessage. يمكن إنشاء CloudQueueMessage إما من سلسلة (بتنسيق UTF-8) أو من صفيف بايت. ينشئ مثال التعليمات البرمجية التالي قائمة انتظار (إذا لم تكن موجودة) ويدرج الرسالة 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();
}
نظرة خاطفة على الرسالة التالية
يمكنك التحرير السريع للرسالة الموجودة في مقدمة أي قائمة انتظار دون إزالتها من قائمة الانتظار عن طريق استدعاء 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();
}
تغيير محتويات رسالة في قائمة الانتظار
يبحث نموذج التعليمات البرمجية التالي من خلال قائمة انتظار الرسائل، ويحدد موقع محتوى الرسالة الأولى الذي يطابق 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");
// 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();
}
يقوم نموذج التعليمات البرمجية التالي بتحديث أول رسالة مرئية فقط في قائمة الانتظار.
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();
}
الحصول على طول قائمة الانتظار
ترجع هذه الطريقة downloadAttributes عدة قيم بما في ذلك عدد الرسائل الموجودة حاليًا في قائمة انتظار. يعتبر العدد تقريبيًا فقط لأنه يمكن إضافة الرسائل أو إزالتها بعد طلبك. تعيد الطريقة getApproximateMessageCount القيمة الأخيرة التي تم استردادها بواسطة استدعاء downloadAttributes، دون استدعاء Queue Storage.
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();
}
حذف الرسالة التالية من القائمة
تحذف التعليمات البرمجية الرسالة من قائمة الانتظار في خطوتين. عندما تستدعي retrieveMessage، تظهر الرسالة التالية في قائمة انتظار. تصبح رسالة التي تم إرجاعها من retrieveMessage غير مرئية إلى أية تعليمات برمجية أخرى قراءة الرسائل من قائمة الانتظار هذه. بشكل افتراضي، تبقى هذه الرسالة غير مرئية لمدة 30 ثانية. لإنهاء إزالة الرسالة من قائمة الانتظار، يجب عليك أيضا الاتصال deleteMessage. إذا فشلت التعليمات البرمجية في معالجة رسالة، تشمل هذه العملية المكونة من خطوتين أنه يُمكنك الحصول على نفس الرسالة والمحاولة مرة أخرى. تستدعي تعليماتك البرمجية 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();
}
خيارات إضافية من أجل إزالة الرسائل من القائمة
يستخدم مثال التعليمة البرمجية التالي طريقة retrieveMessages للحصول على 20 رسالة في الاستدعاء الواحد. ثم يقوم بمعالجة كل رسالة داخل كل دفعة باستخدام متداخلة التكرار الحلقيfor. كما أنه يحدد مهلة الاختفاء إلى خمس دقائق (300 ثانية) لكل رسالة. تبدأ المهلة لجميع الرسائل في نفس الوقت. عند مرور خمس دقائق منذ الاستدعاء إلى retrieveMessages، تصبح أي رسائل لم يتم حذفها مرئية مرة أخرى.
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();
}
سرد قوائم الانتظار
للحصول على قائمة قوائم الانتظار الحالية، قم باستدعاء 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();
}
حذف قائمة انتظار
من أجل حذف قائمة انتظار وجميع الرسائل المضمنة فيها، اتصل بالطريقة deleteIfExists على العنصر 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();
}