التشغيل السريع: مكتبة عميل Azure Queue Storage ل Java

ابدأ مع مكتبة عميل Azure Queue Storage ل Java. Azure Queue Storage هي خدمة لتخزين أعداد كبيرة من الرسائل لاسترجاعها ومعالجتها لاحقاً. يُرجى اتباع هذه الخطوات لتثبيت الحزمة وتجربة التعليمات البرمجية للمهام الأساسية.

الوثائق | المرجعية لواجهة برمجة التطبيقات حزمة التعليمات البرمجية | المصدر لمكتبة (Maven)عينات |

استخدم مكتبة عميل Azure Queue Storage ل Java من أجل:

  • إنشاء ‏‫‏‏قائمة انتظار‬
  • إضافة رسائل إلى قائمة انتظار
  • إلقاء نظرة خاطفة على الرسائل الموجودة في قائمة الانتظار
  • تحديث رسالة في قائمة انتظار
  • الحصول على طول قائمة الانتظار
  • استقبال الرسائل من قائمة الانتظار
  • حذف الرسائل من قائمة الانتظار
  • حذف قائمة انتظار

المتطلبات الأساسية

الإعداد

يرشدك هذا القسم خلال إعداد مشروع للعمل مع مكتبة عميل Azure Queue Storage ل Java.

إنشاء مشروع

إنشاء تطبيق Java باسم queues-quickstart.

  1. في نافذة وحدة التحكم (مثل cmd أو PowerShell أو Bash)، استخدم Maven لإنشاء تطبيق وحدة تحكم جديد مع قائمة انتظار الاسم-التشغيل السريع. اكتب الأمر التالي mvn لإنشاء "Hello, world!" مشروع Java.

    mvn archetype:generate `
        --define interactiveMode=n `
        --define groupId=com.queues.quickstart `
        --define artifactId=queues-quickstart `
        --define archetypeArtifactId=maven-archetype-quickstart `
        --define archetypeVersion=1.4
    
  2. يجب أن تبدو المخرجات الناتجة عن إنشاء المشروع على هذا النحو:

    [INFO] Scanning for projects...
    [INFO]
    [INFO] ------------------< org.apache.maven:standalone-pom >-------------------
    [INFO] Building Maven Stub Project (No POM) 1
    [INFO] --------------------------------[ pom ]---------------------------------
    [INFO]
    [INFO] >>> maven-archetype-plugin:3.1.2:generate (default-cli) > generate-sources @ standalone-pom >>>
    [INFO]
    [INFO] <<< maven-archetype-plugin:3.1.2:generate (default-cli) < generate-sources @ standalone-pom <<<
    [INFO]
    [INFO]
    [INFO] --- maven-archetype-plugin:3.1.2:generate (default-cli) @ standalone-pom ---
    [INFO] Generating project in Batch mode
    [INFO] ----------------------------------------------------------------------------
    [INFO] Using following parameters for creating project from Archetype: maven-archetype-quickstart:1.4
    [INFO] ----------------------------------------------------------------------------
    [INFO] Parameter: groupId, Value: com.queues.quickstart
    [INFO] Parameter: artifactId, Value: queues-quickstart
    [INFO] Parameter: version, Value: 1.0-SNAPSHOT
    [INFO] Parameter: package, Value: com.queues.quickstart
    [INFO] Parameter: packageInPathFormat, Value: com/queues/quickstart
    [INFO] Parameter: version, Value: 1.0-SNAPSHOT
    [INFO] Parameter: package, Value: com.queues.quickstart
    [INFO] Parameter: groupId, Value: com.queues.quickstart
    [INFO] Parameter: artifactId, Value: queues-quickstart
    [INFO] Project created from Archetype in dir: C:\quickstarts\queues\queues-quickstart
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  6.394 s
    [INFO] Finished at: 2019-12-03T09:58:35-08:00
    [INFO] ------------------------------------------------------------------------
    
  3. قم بالتبديل إلى دليل التشغيل السريع لقوائم الانتظار التي تم إنشاؤها حديثا.

    cd queues-quickstart
    

قم بتثبيت الحِزَم

افتح الملف pom.xml في محرر النصوص الخاص بك.

أضف azure-sdk-bom للحصول على تبعية على أحدث إصدار من المكتبة. في القصاصة البرمجية التالية، استبدل {bom_version_to_target} العنصر النائب برقم الإصدار. استخدام azure-sdk-bom يمنعك من الاضطرار إلى تحديد إصدار كل تبعية فردية. لمعرفة المزيد حول قائمة مكونات الصنف، راجع README ل Azure SDK BOM.

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.azure</groupId>
            <artifactId>azure-sdk-bom</artifactId>
            <version>{bom_version_to_target}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

ثم أضف عناصر التبعية التالية إلى مجموعة التبعيات. تبعية azure-identity مطلوبة للاتصالات بدون كلمة مرور بخدمات Azure.

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-storage-queue</artifactId>
</dependency>
<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-identity</artifactId>
</dependency>

إعداد إطار عمل التطبيق

من دليل المشروع:

  1. انتقل إلى دليل /src/main/java/com/queues/quickstart
  2. فتح الملف App.java في المحرر الخاص بك
  3. احذف System.out.println("Hello, world"); العبارة
  4. أضف توجيهات import

وهنا التعليمة البرمجية:

package com.queues.quickstart;

/**
 * Azure Queue Storage client library quickstart
 */
import com.azure.identity.*;
import com.azure.storage.queue.*;
import com.azure.storage.queue.models.*;
import java.io.*;

public class App
{
    public static void main(String[] args) throws IOException
    {
        // Quickstart code goes here
    }
}

مصادقة Azure

يجب التصريح بطلبات التطبيق إلى معظم خدمات Azure. DefaultAzureCredential استخدام الفئة التي توفرها مكتبة عميل Azure Identity هو الأسلوب الموصى به لتنفيذ الاتصالات بدون كلمة مرور بخدمات Azure في التعليمات البرمجية الخاصة بك.

يمكنك أيضا تخويل الطلبات إلى خدمات Azure باستخدام كلمات المرور أو سلسلة الاتصال أو بيانات الاعتماد الأخرى مباشرة. ومع ذلك، ينبغي استخدام هذا النهج بحذر. يجب أن يكون المطورون مجتهدا لعدم كشف هذه الأسرار في موقع غير آمن. يمكن لأي شخص لديه حق الوصول إلى كلمة المرور أو المفتاح السري المصادقة. DefaultAzureCredential يوفر مزايا إدارة وأمان محسنة عبر مفتاح الحساب للسماح بالمصادقة التي لا تتطلب كلمة مرور. يتم عرض كلا الخيارين في المثال التالي.

DefaultAzureCredential هي فئة توفرها مكتبة عميل Azure Identity ل Java. لمعرفة المزيد حول DefaultAzureCredential، راجع نظرة عامة على DefaultAzureCredential. DefaultAzureCredential يدعم أساليب مصادقة متعددة ويحدد الأسلوب الذي يجب استخدامه في وقت التشغيل. يمكن هذا النهج تطبيقك من استخدام أساليب مصادقة مختلفة في بيئات مختلفة (البيئة المحلية مقابل بيئة التشغيل) دون تنفيذ التعليمات البرمجية الخاصة بالبيئة.

على سبيل المثال، يمكن لتطبيقك المصادقة باستخدام بيانات اعتماد تسجيل الدخول إلى Azure CLI عند التطوير محليا، ثم استخدام هوية مدارة بمجرد نشرها في Azure. لا توجد تغييرات في التعليمات البرمجية مطلوبة لهذه المرحلة الانتقالية.

عند التطوير محليا، تأكد من أن حساب المستخدم الذي يصل إلى بيانات قائمة الانتظار لديه الأذونات الصحيحة. ستحتاج إلى مساهم بيانات قائمة انتظار التخزين لقراءة بيانات قائمة الانتظار وكتابتها. لتعيين هذا الدور لنفسك، ستحتاج إلى تعيين دور المستخدم Access مسؤول istrator، أو دور آخر يتضمن إجراء Microsoft.Authorization/roleAssignments/write. يمكنك تعيين أدوار Azure RBAC لمستخدم باستخدام مدخل Microsoft Azure أو Azure CLI أو Azure PowerShell. يمكنك معرفة المزيد حول النطاقات المتوفرة لتعيينات الأدوار في صفحة نظرة عامة على النطاق.

في هذا السيناريو، ستقوم بتعيين أذونات لحساب المستخدم الخاص بك، محددة النطاق إلى حساب التخزين، لاتباع مبدأ أقل الامتيازات. تمنح هذه الممارسة المستخدمين الحد الأدنى من الأذونات المطلوبة فقط وتنشئ بيئات تشغيل أكثر أمانًا.

سيقوم المثال التالي بتعيين دور مساهم بيانات قائمة انتظار التخزين لحساب المستخدم الخاص بك، والذي يوفر حق الوصول للقراءة والكتابة إلى بيانات قائمة الانتظار في حساب التخزين الخاص بك.

هام

في معظم الحالات، سيستغرق نشر تعيين الدور في Azure دقيقة أو دقيقتين، ولكن في حالات نادرة قد يستغرق الأمر ما يصل إلى ثماني دقائق. إذا تلقيت أخطاء المصادقة عند تشغيل التعليمات البرمجية لأول مرة، فانتظر بضع لحظات وحاول مرة أخرى.

  1. في مدخل Microsoft Azure، حدد موقع حساب التخزين الخاص بك باستخدام شريط البحث الرئيسي أو شريط التنقل الأيسر.

  2. في صفحة نظرة عامة على حساب التخزين، حدد التحكم بالوصول (IAM) من القائمة اليسرى.

  3. حدد صفحة التحكم بالوصول (IAM)، وحدد علامة تبويب تعيينات الدور.

  4. حدد + إضافة من القائمة العلوية ثم إضافة تعيين الدور من القائمة المنسدلة الناتجة.

A screenshot showing how to assign a role.

  1. استخدم مربع البحث لتصفية النتائج إلى الدور المطلوب. في هذا المثال، ابحث عن مساهم بيانات قائمة انتظار التخزين وحدد النتيجة المطابقة ثم اختر التالي.

  2. ضمن تعيين الوصول إلى، حدد المستخدم أو المجموعة أو كيان الخدمة، ثم اختر + تحديد الأعضاء.

  3. في مربع الحوار، ابحث عن اسم مستخدم Microsoft Entra (عنوان بريدك الإلكتروني user@domain عادة) ثم اختر تحديد في أسفل مربع الحوار.

  4. حدد مراجعة + تعيين للانتقال إلى الصفحة النهائية، ثم مراجعة + تعيين مرة أخرى لإكمال العملية.

نموذج الكائن

Azure Queue Storageهي خدمة لتخزين أعداد كبيرة من الرسائل. يمكن أن يصل حجم رسالة قائمة الانتظار إلى 64 كيلوبايت. قد تحتوي قائمة الانتظار على ملايين الرسائل، حتى الحد الأقصى للسعة الإجمالية لحساب التخزين. تُستخدم قوائم الانتظار بشكل شائع لإنشاء تراكم للعمل للمعالجة بشكل غير متزامن. يوفر Queue Storage ثلاثة أنواع من الموارد:

  • حساب التخزين: تتم جميع إجراءات الوصول إلى Azure Storage من خلال حساب تخزين. لمزيد من المعلومات حول حسابات التخزين، راجع نظرة عامة على حساب التخزين
  • قائمة الانتظار: تحتوي قائمة الانتظار على مجموعة من الرسائل. يجب أن تكون كافة الرسائل في قائمة انتظار. لاحظ أن اسم قائمة الانتظار يجب أن تكون بحروف صغيرة. من أجل الحصول على معلومات حول تسمية قوائم الانتظار، راجع تسمية قوائم الانتظار وبيانات التعريف.
  • رسالة: يصل حجم الرسالة، بأي تنسيق، إلى 64 كيلوبايت. يمكن أن تبقى الرسالة في قائمة الانتظار لمدة أقصاها 7 أيام. بالنسبة إلى الإصدار بتاريخ 2017-07-29 أو الأحدث، يمكن أن تكون أقصى مدة للبقاء أي رقم إيجابي، أو -1 يشير إلى أن الرسالة لا تنتهي صلاحيتها. إذا حُذفت هذه المعلمة، فإن مدة البقاء الافتراضية هي سبعة أيام.

يعرض الرسم التخطيطي التالي العلاقة بين هذه الموارد.

Diagram of Queue storage architecture

استخدم فئات Java التالية للتفاعل مع هذه الموارد:

  • QueueClientBuilder: تقوم الفئة QueueClientBuilder بتهيئة وإنشاء كائن QueueClient.
  • QueueServiceClientالـQueueServiceClientيتيح إمكانية إدارة جميع قوائم الانتظار في حسابات التخزين.
  • QueueClient: تسمح لك الفئة QueueClient بإدارة قائمة انتظار فردية ورسائلها ومعالجتها.
  • QueueMessageItem: تمثل الفئة QueueMessageItem الكائنات الفردية التي يتم إرجاعها عند استدعاء ReceiveMessages في قائمة انتظار.

أمثلة على التعليمات البرمجية

توضح لك أمثلة التعليمات البرمجية هذه كيفية تنفيذ الإجراءات التالية باستخدام مكتبة عميل Azure Queue Storage لـJava:

تخويل الوصول وإنشاء كائن عميل

تأكد من مصادقتك باستخدام حساب Microsoft Entra نفسه الذي قمت بتعيين الدور إليه. يمكنك المصادقة عبر Azure CLI أو Visual Studio Code أو Azure PowerShell.

سجل الدخول إلى Azure من خلال Azure CLI باستخدام الأمر التالي:

az login

بمجرد المصادقة، يمكنك إنشاء عنصر وتخويله QueueClient باستخدام DefaultAzureCredential للوصول إلى بيانات قائمة الانتظار في حساب التخزين. DefaultAzureCredential يكتشف الحساب الذي قمت بتسجيل الدخول باستخدامه في الخطوة السابقة ويستخدمه تلقائيا.

للتخويل باستخدام DefaultAzureCredential، تأكد من إضافة تبعية azure-identity في pom.xml، كما هو موضح في تثبيت الحزم. تأكد أيضا من إضافة توجيه استيراد ل com.azure.identity في ملف App.java :

import com.azure.identity.*;

حدد اسما لقائمة الانتظار وأنشئ مثيلا للفئة QueueClient ، باستخدام DefaultAzureCredential للتخويل. نستخدم كائن العميل هذا لإنشاء مورد قائمة الانتظار والتفاعل معه في حساب التخزين.

هام

قد تحتوي أسماء قائمة الانتظار فقط على أحرف صغيرة وأرقام وواصلات، ويجب أن تبدأ بحرف أو رقم. يجب أن تكون كل واصلة مسبوقةً ومتبوعةً بحرف أو رقم. يجب أن يتراوح طول الاسم أيضاً بين 3 و63 حرفاً. لمزيد من المعلومات حول تسمية قوائم الانتظار، راجع تسمية قوائم الانتظار وبيانات التعريف.

أضف هذه التعليمة البرمجية main داخل الأسلوب، وتأكد من استبدال <storage-account-name> قيمة العنصر النائب:

System.out.println("Azure Queue Storage client library - Java quickstart sample\n");

// Create a unique name for the queue
String queueName = "quickstartqueues-" + java.util.UUID.randomUUID();

// Instantiate a QueueClient
// We'll use this client object to create and interact with the queue
// TODO: replace <storage-account-name> with the actual name
QueueClient queueClient = new QueueClientBuilder()
        .endpoint("https://<storage-account-name>.queue.core.windows.net/")
        .queueName(queueName)
        .credential(new DefaultAzureCredentialBuilder().build())
        .buildClient();

إشعار

يجب أن تكون الرسائل المرسلة QueueClient باستخدام الفئة بتنسيق يمكن تضمينه في طلب XML مع ترميز UTF-8. يمكنك اختياريا تعيين خيار QueueMessageEncoding لمعالجة BASE64 الرسائل غير المتوافقة.

إنشاء ‏‫‏‏قائمة انتظار‬

QueueClient باستخدام الكائن ، قم باستدعاء create الأسلوب لإنشاء قائمة الانتظار في حساب التخزين الخاص بك.

إضافة هذه التعليمات البرمجية إلى نهاية الأسلوب main:

System.out.println("Creating queue: " + queueName);

// Create the queue
queueClient.create();

إضافة رسائل إلى قائمة انتظار

يضيف مقتطف الشفرة التالي الرسائل إلى قائمة الانتظار من خلال استدعاء الطريقة sendMessage. كما أنه يحفظ أيضاً SendMessageResult تم إرجاعه من مكالمة sendMessage. تستخدم النتيجة لتحديث الرسالة لاحقاً في البرنامج.

إضافة هذه التعليمات البرمجية إلى نهاية الأسلوب main:

System.out.println("\nAdding messages to the queue...");

// Send several messages to the queue
queueClient.sendMessage("First message");
queueClient.sendMessage("Second message");

// Save the result so we can update this message later
SendMessageResult result = queueClient.sendMessage("Third message");

إلقاء نظرة خاطفة على الرسائل الموجودة في قائمة الانتظار

ألق نظرة خاطفة على الرسائل في قائمة الانتظار من خلال استدعاء الأسلوب peekMessages. تسترد هذه الطريقة رسالة واحدة أو أكثر من مقدمة قائمة الانتظار ولكنها لا تغير رؤية الرسالة.

إضافة هذه التعليمات البرمجية إلى نهاية الأسلوب main:

System.out.println("\nPeek at the messages in the queue...");

// Peek at messages in the queue
queueClient.peekMessages(10, null, null).forEach(
    peekedMessage -> System.out.println("Message: " + peekedMessage.getMessageText()));

تحديث رسالة في قائمة انتظار

قم بتحديث محتويات الرسالة عن طريق استدعاء الطريقة updateMessage. يمكن لهذه الطريقة تغيير مهلة رؤية الرسالة ومحتوياتها. يجب أن يكون محتوى الرسالة عبارة عن سلسلة مشفرة UTF-8 يصل حجمها إلى 64 كيلو بايت. جنباً إلى جنب مع المحتوى الجديد للرسالة، قم بتمرير معرف الرسالة والإيصال المنبثق باستخدام SendMessageResult الذي تم حفظه مسبقاً في الرمز. يحدد معرف الرسالة والإيصال المنبثق الرسالة المراد تحديثها.

System.out.println("\nUpdating the third message in the queue...");

// Update a message using the result that
// was saved when sending the message
queueClient.updateMessage(result.getMessageId(),
                          result.getPopReceipt(),
                          "Third message has been updated",
                          Duration.ofSeconds(1));

الحصول على طول قائمة الانتظار

يمكنك الحصول على تقدير لعدد الرسائل في قائمة انتظار.

ترجع هذه الطريقة getProperties عدة قيم بما في ذلك عدد الرسائل الموجودة حاليًا في قائمة انتظار. يعتبر العدد تقريبيًا فقط لأنه يمكن إضافة الرسائل أو إزالتها بعد طلبك. تعيد الطريقة getApproximateMessageCount القيمة الأخيرة التي تم استردادها بواسطة استدعاء getProperties، دون استدعاء Queue Storage.

QueueProperties properties = queueClient.getProperties();
long messageCount = properties.getApproximateMessagesCount();

System.out.println(String.format("Queue length: %d", messageCount));

تلقي وحذف الرسائل من قائمة الانتظار

يُرجى تحميل الرسائل المضافة مسبقاً من خلال استدعاء الأسلوب receiveMessages. يحذف رمز المثال أيضاً الرسائل من قائمة الانتظار بعد استلامها ومعالجتها. في هذه الحالة، تقوم المعالجة فقط بعرض الرسالة على وحدة التحكم.

يتوقف التطبيق مؤقتاً لإدخال المستخدم عن طريق الاتصال بـ System.console().readLine(); قبل أن يستلم الرسائل ويحذفها. لذا يرجى التحقق في مدخل Microsoft Azure من أن الموارد تم إنشاؤها بشكل صحيح، قبل حذفها. تصبح أي رسائل لم يتم حذفها بشكل صريح مرئية في قائمة الانتظار مرة أخرى للحصول على فرصة أخرى لمعالجتها.

إضافة هذه التعليمات البرمجية إلى نهاية الأسلوب main:

System.out.println("\nPress Enter key to receive messages and delete them from the queue...");
System.console().readLine();

// Get messages from the queue
queueClient.receiveMessages(10).forEach(
    // "Process" the message
    receivedMessage -> {
        System.out.println("Message: " + receivedMessage.getMessageText());

        // Let the service know we're finished with
        // the message and it can be safely deleted.
        queueClient.deleteMessage(receivedMessage.getMessageId(), receivedMessage.getPopReceipt());
    }
);

عند استدعاء receiveMessages الأسلوب، يمكنك اختياريا تحديد قيمة ل maxMessages، وهو عدد الرسائل المراد استردادها من قائمة الانتظار. الإعداد الافتراضي هو رسالة 1 والحد الأقصى هو 32 رسالة. يمكنك أيضا تحديد قيمة ل visibilityTimeout، والتي تخفي الرسائل من العمليات الأخرى لفترة المهلة. المهلة الافتراضية هي 30 ثانية.

حذف قائمة انتظار

تعمل الشفرة التالية على تنظيف الموارد التي أنشأها التطبيق عن طريق حذف قائمة الانتظار باستخدام الطريقة Delete.

إضافة هذه التعليمات البرمجية إلى نهاية الأسلوب main:

System.out.println("\nPress Enter key to delete the queue...");
System.console().readLine();

// Clean up
System.out.println("Deleting queue: " + queueClient.getQueueName());
queueClient.delete();

System.out.println("Done");

تشغيل التعليمات البرمجية

ينشئ هذا التطبيق ويضيف ثلاث رسائل إلى قائمة انتظار Azure. يسرد الرمز الرسائل الموجودة في قائمة الانتظار، ثم يسترجعها ويحذفها، قبل حذف قائمة الانتظار في النهاية.

في نافذة وحدة التحكم، انتقل إلى دليل التطبيق، ثم أنشئ التطبيق وشغله.

mvn compile

ثم قم ببناء الحزمة.

mvn package

استخدم الأمر mvn التالي لتشغيل التطبيق.

mvn exec:java -Dexec.mainClass="com.queues.quickstart.App" -Dexec.cleanupDaemonThreads=false

يتشابه إخراج التطبيق مع المثال التالي:

Azure Queue Storage client library - Java quickstart sample

Adding messages to the queue...

Peek at the messages in the queue...
Message: First message
Message: Second message
Message: Third message

Updating the third message in the queue...

Press Enter key to receive messages and delete them from the queue...

Message: First message
Message: Second message
Message: Third message has been updated

Press Enter key to delete the queue...

Deleting queue: quickstartqueues-fbf58f33-4d5a-41ac-ac0e-1a05d01c7003
Done

عندما يتوقف التطبيق مؤقتاً قبل تلقي الرسائل، تحقق من حساب التخزين في "مدخل Microsoft Azure". تحقق من وجود الرسائل في قائمة الانتظار.

اضغط على مفتاح Enter لتلقي الرسائل وحذفها. عند المطالبة، اضغط على مفتاح Enter مرة أخرى لحذف قائمة الانتظار وإنهاء العرض التوضيحي.

الخطوات التالية

في هذه البداية السريعة، تعلمت كيفية إنشاء قائمة انتظار وإضافة رسائل إليها باستخدام كود Java. ثم تعلمت إلقاء نظرة خاطفة على الرسائل واستردادها وحذفها. أخيراً، تعلمت كيفية حذف قائمة انتظار الرسائل.

للحصول على البرامج التعليمية والعينات والبدايات السريعة والوثائق الأخرى، قم بزيارة: