مشاركة عبر


التشغيل السريع: مكتبة عميل 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 لإنشاء تطبيق وحدة تحكم جديد بالاسم queues-quickstart. اكتب الأمر التالي mvn لإنشاء "مرحبا، العالم!" مشروع جافا.

    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 من الاضطرار إلى تحديد إصدار كل تبعية فردية. لمعرفة المزيد حول قائمة مكونات الصنف، راجع الملف التمهيدي لقائمة مكونات صنف Azure SDK.

<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 للاتصالات بدون كلمة مرور بخدمات 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. لا توجد تغييرات في التعليمات البرمجية مطلوبة لهذه المرحلة الانتقالية.

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

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

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

Important

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

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

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

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

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

لقطة شاشة توضح كيفية تعيين دور.

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

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

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

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

نموذج الكائن

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

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

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

رسم تخطيطي لبنية تخزين قائمة الانتظار

استخدم فئات 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-فيpom.xml، كما هو موضح في تثبيت الحزم. تأكد أيضا من إضافة توجيه استيراد في com.azure.identity ملف App.java :

import com.azure.identity.*;

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

Important

قد تحتوي أسماء قوائم الانتظار على أحرف صغيرة وأرقام وواصلات فقط، ويجب أن تبدأ بحرف أو رقم. يجب أن يسبق كل واصلة ويتبعها حرف غير وااصل. يجب أن يتراوح طول الاسم أيضا بين 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، دون استدعاء تخزين قائمة الانتظار.

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. ثم تعلمت إلقاء نظرة خاطفة على الرسائل واستردادها وحذفها. أخيرا ، تعلمت كيفية حذف قائمة انتظار رسائل.

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