مشغل تخزين Azure Queue والروابط لنظرة عامة على وظائف Azure

يمكن تشغيل وظائف Azure مع إنشاء رسائل تخزين جديدة بـ Azure Queue، كما يمكن كتابة رسائل قائمة الانتظار داخل دالة.

الإجراء نوع
تشغيل الدالة كتغييرات في بيانات تخزين قائمة الانتظار المشغِّل
كتابة رسائل تخزين قائمة الانتظار ربط الإخراج

تثبيت الملحق

تعتمد حزمة NuGet الملحق التي تقوم بتثبيتها على وضع C# الذي تستخدمه في تطبيق الوظائف:

يتم تنفيذ الوظائف في عملية عامل C# معزولة. لمعرفة المزيد، راجع دليل تشغيل وظائف C# Azure في عملية عامل معزولة.

تختلف وظيفة الملحق باختلاف إصدار الملحق:

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

يسمح هذا الإصدار بربط الأنواع منAzure.Storage.Blobs.

أضف الملحق إلى مشروعك عن طريق تثبيت حزمة NuGet، الإصدار 5.x.

استخدام .NET CLI:

dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Storage.Queues --version 5.0.0

إشعار

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

في السابق، تم شحن الملحقات معا ك Microsoft.Azure.Functions.Worker.Extensions.Storage، الإصدار 4.x. تحتوي هذه الحزمة ذاتها أيضاً علىالإصدار 5.x، والذي يشير إلى الحِزم المنقسمة للعناصر الثنائية كبيرة الحجم وقوائم الانتظار فقط. عند ترقية مراجع الحزمة من الإصدارات القديمة، قد تحتاج بالتالي إلى الرجوع إلى حزمة NuGet الجديدة Microsoft.Azure.Functions.Worker.Extensions.Tables . أيضاً، عند الرجوع إلى هذه الحزم المقسمة الأحدث، تأكد من أنك لا تشير إلى إصدار أقدم من حزمة التخزين المدمجة، لأن هذا سيؤدي إلى تعارضات من تعريفين لنفس الارتباطات.

تثبيت الحزمة

يعتبر ربط التخزين Blob جزءًا منحزمة الامتداد، المحددة في ملف مشروع host.json الخاص بك. من الممكن أن تحتاج إلى تعديل هذه الحزمة لتغيير إصدار الربط، أو إذا لم تكن الحزم مثبتة بالفعل. لمعرفة المزيد، راجع حزمة الإضافات.

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

يمكنك إضافة هذا الإصدار من الملحق من معاينة حزمة الامتداد v3 من خلال إضافة أو استبدال الكود التالي فيhost.jsonملفك:

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[3.3.0, 4.0.0)"
    }
}

لمعرفة المزيد، راجع تحديث الإضافات.

أنواع الربط

تعتمد أنواع الربط المعتمدة ل .NET على كل من إصدار الملحق ووضع تنفيذ C#، والتي يمكن أن تكون واحدة مما يلي:

تعمل مكتبة فئة معالجة عامل معزولة تعمل دالة C# المحولة برمجيا في عملية معزولة عن وقت التشغيل.

اختر إصدارا للاطلاع على تفاصيل نوع الربط للوضع والإصدار.

تدعم عملية العامل المعزولة أنواع المعلمات وفقا للجداول أدناه. دعم الربط بالأنواع من Azure.Storage.Queues قيد المعاينة .

مشغل قائمة الانتظار

يمكن ربط مشغل قائمة الانتظار بالأنواع التالية:

النوع ‏‏الوصف
string محتوى الرسالة كسلسلة. استخدم عندما تكون الرسالة نصا بسيطا.
byte[] وحدات البايت للرسالة.
‏‏أنواع قابلة للتسلسل إلى JSON عندما تحتوي رسالة قائمة الانتظار على بيانات JSON، تحاول الدالات إلغاء تسلسل بيانات JSON إلى نوع كائن CLR (POCO) قديم عادي.
QueueMessage1 الرسالة.
BinaryData1 وحدات البايت للرسالة.

1 لاستخدام هذه الأنواع، تحتاج إلى الرجوع إلى Microsoft.Azure.Functions.Worker.Extensions.Storage.Queues 5.2.0 أو أحدث والتبعيات الشائعة لروابط نوع SDK.

ربط إخراج قائمة الانتظار

عندما تريد أن تكتب الدالة رسالة واحدة، يمكن ربط إخراج قائمة الانتظار بالأنواع التالية:

النوع ‏‏الوصف
string محتوى الرسالة كسلسلة. استخدم عندما تكون الرسالة نصاً بسيطاً.
byte[] وحدات البايت للرسالة.
‏‏أنواع قابلة للتسلسل إلى JSON كائن يمثل محتوى رسالة JSON. تحاول الدالات تسلسل نوع كائن CLR (POCO) قديم عادي في بيانات JSON.

عندما تريد أن تكتب الدالة رسائل متعددة، يمكن ربط إخراج قائمة الانتظار بالأنواع التالية:

النوع ‏‏الوصف
T[] حيث T هو أحد أنواع الرسائل الفردية صفيف يحتوي على محتوى لرسائل متعددة. يمثل كل إدخال رسالة واحدة.

بالنسبة لسيناريوهات الإخراج الأخرى، قم بإنشاء واستخدام أنواع من Azure.Storage.Queues مباشرة.

إعدادات host.json

يصف هذا القسم إعدادات التكوين المتاحة لهذا الربط في الإصدارات 2.x وأعلى. تنطبق الإعدادات في ملف host.json على جميع الوظائف في مثيل تطبيق الوظائف. يحتوي مثال ملف host.json أدناه على إعدادات الإصدار 2.x + فقط لهذا الربط. للحصول على مزيدٍ من المعلومات عن إعدادات تكوين التطبيق الوظيفي في الإصدارات 2.x والإصدارات الأحدث، راجع مرجع host.json لوظائف Azure.

إشعار

للحصول على مرجع لـ host.json في دالات 1.x، راجع مرجع host.json لوظائفAzure 1.x.

{
    "version": "2.0",
    "extensions": {
        "queues": {
            "maxPollingInterval": "00:00:02",
            "visibilityTimeout" : "00:00:30",
            "batchSize": 16,
            "maxDequeueCount": 5,
            "newBatchThreshold": 8,
            "messageEncoding": "base64"
        }
    }
}
الخاصية Default ‏‏الوصف
maxPollingInterval 00:01:00 الفاصل الزمني الأقصى بين استطلاعات قائمة الانتظار. الفاصل الزمني الأدنى هو 00:00:00.100 (100 مللي ثانية). زيادة الفواصل الزمنية حتى maxPollingInterval. القيمة الافتراضية هي maxPollingInterval 00:01:00 (دقيقة واحدة). maxPollingInterval يجب ألا يقل عن 00:00:00.100 (100 مللي ثانية). في Functions 2.x والإحدث، يكون نوع البيانات هو TimeSpan. في الدالات 1.x، تكون بالمللي ثانية.
visibilityTimeout 00:00:00 الفاصل الزمني بين إعادة المحاولة عند فشل معالجة الرسالة.
batchSize 16 عدد رسائل قائمة الانتظار التي يقوم وقت تشغيل الدالات باستردادها في وقت واحد، ومعالجتها بالتوازي. عندما يصل الرقم الذي تتم معالجته إلى newBatchThreshold، يحصل وقت التشغيل على دفعة أخرى ويبدأ معالجة هذه الرسائل. لذا فإن الحد الأقصى لعدد الرسائل المتزامنة التي تتم معالجتها لكل وظيفة هو batchSize زائد newBatchThreshold. ينطبق هذا الحد بشكل منفصل على كل دالة تُشغلها قائمة انتظار.

إذا كنت تريد تجنب التنفيذ الموازي للرسائل المتلقاة في قائمة انتظار واحدة، يمكنك تعيين batchSize إلى 1. ومع ذلك، يلغي هذا الإعداد التزامن طالما يعمل تطبيق الوظيفة على جهاز ظاهري (VM) واحد فقط. إذا توسع تطبيق الوظيفة لأكثر من جهاز ظاهري، يمكن لكل جهاز ظاهري أن يُشغل مثيل واحد من كل وظيفة تُشغلها قائمة الانتظار.

الحد الأقصى لـ batchSize هو 32.
maxDequeueCount 5 عدد المرات التي يجب فيها محاولة معالجة إحدى الرسائل قبل نقلها إلى قائمة انتظار الإزالة.
newBatchThreshold N*حجم الدفعة/ 2 كلما نقص عدد الرسائل التي تتم معالجتها بشكل متزامن وصولاً لهذا الرقم، يقوم وقت التشغيل باسترداد دفعة أخرى.

N يمثل عدد وحدات vCPUs المتوفرة عند التشغيل على App Service أو Premium Plans. قيمته هي 1 لخطة الاستهلاك.
messageEncoding قاعدة 64 يتوفر هذا الإعداد فقط في مجموعة الملحقات الإصدار 5.0.0 والإصدارات الأحدث. ويمثل تنسيق الترميز للرسائل. القيم الصالحة هي base64 و none.

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