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

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

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

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

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

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

الإعداد

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

إنشاء مشروع

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

  1. في نافذة وحدة تحكم (مثل cmd أو PowerShell أو Bash)، قم بإنشاء دليل جديد للمشروع:

    mkdir queues-quickstart
    
  2. التبديل إلى الدليل الذي تم إنشاؤه queues-quickstart حديثا:

    cd queues-quickstart
    
  3. إنشاء ملف package.json:

    npm init -y
    
  4. فتح المشروع في التعليمة البرمجية Visual Studio:

    code .
    

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

من دليل المشروع، قم بتثبيت الحزم التالية باستخدام npm install الأمر .

  1. تثبيت حزمة Azure Queue Storage npm:

    npm install @azure/storage-queue
    
  2. تثبيت حزمة Azure Identity npm لدعم الاتصالات بدون كلمة مرور:

    npm install @azure/identity
    
  3. ثم بتثبيت التبعيات الأخرى المستخدمة في هذا التشغيل السريع:

    npm install uuid dotenv
    

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

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

  1. يرجى فتح ملف نصي جديد في محرر التعليمات البرمجية

  2. أضف require من المكالمات لتحميل وحدتي Azure وNode.js

  3. إنشاء بنية البرنامج، بما في ذلك معالجة الاستثناء الأساسي

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

    const { QueueClient } = require("@azure/storage-queue");
    const { DefaultAzureCredential } = require('@azure/identity');
    const { v1: uuidv1 } = require("uuid");
    
    async function main() {
        console.log("Azure Queue Storage client library - JavaScript quickstart sample");
    
        // Quickstart code goes here
    }
    
    main().then(() => console.log("\nDone")).catch((ex) => console.log(ex.message));
    
    
  4. احفظ الملف الجديد باسم index.js في الدليل queues-quickstart.

مصادقة Azure

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

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

DefaultAzureCredential هي فئة توفرها مكتبة عميل Azure Identity ل JavaScript. لمعرفة المزيد حول 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

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

  • QueueServiceClientQueueServiceClient: يمثل المثيل اتصالا بحساب تخزين معين في خدمة Azure Storage Queue. يسمح لك هذا العميل بإدارة جميع قوائم الانتظار في حساب التخزين الخاص بك.
  • QueueClientQueueClient: يمثل المثيل قائمة انتظار واحدة في حساب تخزين. يسمح لك هذا العميل بإدارة قائمة انتظار فردية ورسائلها ومعالجتها.

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

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

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

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

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

az login

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

للتخويل باستخدام DefaultAzureCredential، تأكد من إضافة حزمة @azure/الهوية ، كما هو موضح في تثبيت الحزم. تأكد أيضا من تحميل الوحدة النمطية @azure/الهوية في ملف index.js :

const { DefaultAzureCredential } = require('@azure/identity');

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

هام

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

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

// Create a unique name for the queue
const queueName = "quickstart" + uuidv1();

// Instantiate a QueueClient which will be used to create and interact with a queue
// TODO: replace <storage-account-name> with the actual name
const queueClient = new QueueClient(`https://<storage-account-name>.queue.core.windows.net/${queueName}`, new DefaultAzureCredential());

إشعار

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

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

لتحويل JSON إلى تنسيق سلسلة والعودة مرة أخرى في Node.js، استخدم وظائف المساعد التالية:

function jsonToBase64(jsonObj) {
    const jsonString = JSON.stringify(jsonObj)
    return  Buffer.from(jsonString).toString('base64')
}
function encodeBase64ToJson(base64String) {
    const jsonString = Buffer.from(base64String,'base64').toString()
    return JSON.parse(jsonString)
}

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

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

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

console.log("\nCreating queue...");
console.log("\t", queueName);

// Create the queue
const createQueueResponse = await queueClient.create();
console.log("Queue created, requestId:", createQueueResponse.requestId);

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

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

أضف هذا الرمز إلى نهاية وظيفة main:

console.log("\nAdding messages to the queue...");

// Send several messages to the queue
await queueClient.sendMessage("First message");
await queueClient.sendMessage("Second message");
const sendMessageResponse = await queueClient.sendMessage("Third message");

console.log("Messages added, requestId:", sendMessageResponse.requestId);

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

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

أضف هذا الرمز إلى نهاية وظيفة main:

console.log("\nPeek at the messages in the queue...");

// Peek at messages in the queue
const peekedMessages = await queueClient.peekMessages({ numberOfMessages : 5 });

for (i = 0; i < peekedMessages.peekedMessageItems.length; i++) {
    // Display the peeked message
    console.log("\t", peekedMessages.peekedMessageItems[i].messageText);
}

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

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

console.log("\nUpdating the third message in the queue...");

// Update a message using the response saved when calling sendMessage earlier
updateMessageResponse = await queueClient.updateMessage(
    sendMessageResponse.messageId,
    sendMessageResponse.popReceipt,
    "Third message has been updated"
);

console.log("Message updated, requestId:", updateMessageResponse.requestId);

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

تُرجعgetPropertiesهذه الطريقة بيانات التعريف بشأن قائمة الانتظار، بما في ذلك العدد التقريبي للرسائل التي تنتظر في قائمة الانتظار.

const properties = await queueClient.getProperties();
console.log("Approximate queue length: ", properties.approximateMessagesCount);

استقبال الرسائل من قائمة الانتظار

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

أضف هذا الرمز إلى نهاية وظيفة main:

console.log("\nReceiving messages from the queue...");

// Get messages from the queue
const receivedMessagesResponse = await queueClient.receiveMessages({ numberOfMessages : 5 });

console.log("Messages received, requestId:", receivedMessagesResponse.requestId);

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

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

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

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

أضف هذا الرمز إلى نهاية وظيفة main:

// 'Process' and delete messages from the queue
for (i = 0; i < receivedMessagesResponse.receivedMessageItems.length; i++) {
    receivedMessage = receivedMessagesResponse.receivedMessageItems[i];

    // 'Process' the message
    console.log("\tProcessing:", receivedMessage.messageText);

    // Delete the message
    const deleteMessageResponse = await queueClient.deleteMessage(
        receivedMessage.messageId,
        receivedMessage.popReceipt
    );
    console.log("\tMessage deleted, requestId:", deleteMessageResponse.requestId);
}

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

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

أضف هذا الرمز إلى نهاية الوظيفة main واحفظ الملف:

// Delete the queue
console.log("\nDeleting queue...");
const deleteQueueResponse = await queueClient.delete();
console.log("Queue deleted, requestId:", deleteQueueResponse.requestId);

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

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

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

node index.js

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

Azure Queue Storage client library - JavaScript quickstart sample

Creating queue...
         quickstart<UUID>
Queue created, requestId: 5c0bc94c-6003-011b-7c11-b13d06000000

Adding messages to the queue...
Messages added, requestId: a0390321-8003-001e-0311-b18f2c000000

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

Updating the third message in the queue...
Message updated, requestId: cb172c9a-5003-001c-2911-b18dd6000000

Receiving messages from the queue...
Messages received, requestId: a039036f-8003-001e-4811-b18f2c000000
        Processing: First message
        Message deleted, requestId: 4a65b82b-d003-00a7-5411-b16c22000000
        Processing: Second message
        Message deleted, requestId: 4f0b2958-c003-0030-2a11-b10feb000000
        Processing: Third message has been updated
        Message deleted, requestId: 6c978fcb-5003-00b6-2711-b15b39000000

Deleting queue...
Queue deleted, requestId: 5c0bca05-6003-011b-1e11-b13d06000000

Done

انتقل إلى التعليمات البرمجية الموجودة في مصحح الأخطاء وتحقق من "مدخل Microsoft Azure" خلال العملية. تحقق من حساب التخزين للتحقق من إنشاء الرسائل الموجودة في قائمة الانتظار وحذفها.

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

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

للحصول على الدروس التعليمية والعينات والتشغيلات السريعة وغيرها من الوثائق، يُرجى زيارة: