البرنامج التعليمي: تشغيل Azure Functions من مهام Azure Functions Stream Analytics

في هذا البرنامج التعليمي، يمكنك إنشاء مهمة Azure Stream Analytics التي تقرأ الأحداث من Azure Event Hubs، وتشغل استعلاما على بيانات الحدث، ثم تستدعي دالة Azure، التي تكتب إلى Azure Cache لمثيل Redis.

لقطة شاشة تعرض العلاقة بين خدمات Azure في الحل.

إشعار

  • يمكنك تشغيل Azure Functions من Azure Stream Analytics عن طريق تكوين Functions كأحد المتلقيات (المخرجات) إلى وظيفة Stream Analytics. تعد Functions تجربة تستند إلى الأحداث وتُحسب عند الطلب تتيح لك تنفيذ التعليمات البرمجية التي يتم تشغيلها بواسطة الأحداث التي تحدث في Azure أو خدمات الجهات الخارجية. إن قدرة Functions على الاستجابة للمحفزات تجعلها ناتجاً طبيعياً لمهام Stream Analytics.
  • تقوم Stream Analytics باستدعاء Functions من خلال مشغلات HTTP. يسمح مهايئ إخراج Functions للمستخدمين بتوصيل المهام بـ Stream Analytics، بحيث يمكن تشغيل الأحداث بناءً على استعلامات Stream Analytics.
  • لا يتم دعم الاتصال بـ Azure Functions داخل شبكة افتراضية (VNet) من مهمة Stream Analytics التي تعمل في نظام مجموعة متعدد المستأجرين.

في هذا البرنامج التعليمي، تتعلم كيفية:

  • إنشاء مثيل Azure Event Hubs
  • إنشاء مثيل Azure Cache لـ Redis
  • إنشاء وظيفة Azure
  • إنشاء مشروع وظائف Stream Analytics
  • تكوين مركز الأحداث كإدخل ووظيفة كإخراج
  • تشغيل وظيفة Stream Analytics
  • تحقق من Azure Cache لـ Redis للحصول على النتائج

في حال لم يكن لديك اشتراك في Azure، يُمكنك إنشاء حساب مجاني قبل البدء.

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

قبل أن تبدأ، تأكد من إكمال الخطوات التالية:

  • إذا لم يكن لديك اشتراك Azure، ⁩فيمكنك إنشاء حساب مجاني.
  • قم بتنزيل تطبيق مولد أحداث المكالمة الهاتفية، TelcoGenerator.zip من مركز التنزيل لـ Microsoft أو احصل على التعليمة البرمجية المصدر من GitHub.

تسجيل الدخول إلى Azure

قم بتسجيل الدخول إلى بوابة Azure.

إنشاء مركز أحداث

تحتاج إلى إرسال بعض البيانات النموذجية إلى مركز أحداث قبل أن يتمكن Stream Analytics من تحليل دفق بيانات المكالمات الاحتيالية. في هذا البرنامج التعليمي، يمكنك إرسال البيانات إلى Azure باستخدام Azure Event Hubs.

استخدم الخطوات التالية لإنشاء مركز أحداث وإرسال بيانات المكالمة إلى مركز الحدث هذا:

  1. قم بتسجيل الدخول إلى بوابة Azure.

  2. حدد جميع الخدمات في القائمة اليمنى، وحدد إنترنت الأشياء، ثم قم بالماوس فوق مراكز الأحداث، ثم حدد الزر + (إضافة).

    لقطة شاشة تعرض صفحة إنشاء مراكز الحدث.

  3. في صفحة Create Namespace ، اتبع الخطوات التالية:

    1. حدد اشتراك Azure حيث تريد إنشاء مركز الحدث.

    2. بالنسبة إلى Resource group، حدد Create new وأدخل اسما لمجموعة الموارد. يتم إنشاء مساحة اسم مراكز الأحداث في مجموعة الموارد هذه.

    3. بالنسبة إلى Namespace name، أدخل اسما فريدا لمساحة اسم Event Hubs.

    4. بالنسبة إلى الموقع، حدد المنطقة التي تريد إنشاء مساحة الاسم فيها.

    5. بالنسبة ل Pricing tier، حدد Standard.

    6. حدد مراجعة + إنشاء عند أسفل الصفحة.

      لقطة شاشة تعرض صفحة إنشاء مساحة اسم.

    7. في صفحة Review + create لمعالج إنشاء مساحة الاسم، حدد Create في أسفل الصفحة بعد مراجعة جميع الإعدادات.

  4. بعد نشر مساحة الاسم بنجاح، حدد Go to resource للانتقال إلى صفحة Event Hubs Namespace.

  5. في صفحة مساحة اسم مراكز الأحداث، حدد مركز الأحداث+ في شريط الأوامر.

    لقطة شاشة تعرض زر إضافة مركز أحداث في صفحة مساحة اسم مراكز الأحداث.

  6. في صفحة Create Event Hub، أدخل Name لمركز الأحداث. تعيين عدد الأقسام إلى 2. استخدم الخيارات الافتراضية في الإعدادات المتبقية وحدد Review + create.

    لقطة شاشة تعرض صفحة إنشاء مركز أحداث.

  7. في صفحةمراجعة + إنشاء، حدد إنشاء أسفل الصفحة. ثم انتظر حتى تنجح عملية النشر.

منح حق الوصول إلى مركز الحدث والحصول على سلسلة اتصال

قبل أن تتمكن أحد التطبيقات من إرسال البيانات إلى Azure Event Hubs، يجب أن يكون لمركز الأحداث سياسة تسمح بالوصول. ينتج نهج الوصول سلسلة اتصال تتضمن معلومات التفويض.

  1. في صفحة Event Hubs Namespace ، حدد Shared access policies في القائمة اليمنى.

  2. حدد RootManageSharedAccessKey من قائمة النهج.

  3. ثم حدد زر النسخ بجوار سلسلة الاتصال ion - المفتاح الأساسي.

  4. ألصق سلسلة الاتصال في محرر النص. تحتاج إلى سلسلة الاتصال هذه في القسم التالي.

    سلسلة الاتصال تبدو كما يلي:

    Endpoint=sb://<Your event hub namespace>.servicebus.windows.net/;SharedAccessKeyName=<Your shared access policy name>;SharedAccessKey=<generated key>

    لاحظ أن سلسلة الاتصال يحتوي على أزواج متعددة من قيم المفاتيح مفصولة بفواصل منقوطة: نقطة النهاية و SharedAccessKeyName و SharedAccessKey.

بدء تشغيل تطبيق منشئ الحدث

قبل بدء تشغيل تطبيق "TelcoGenerator"، يجب عليك تكوينه لإرسال البيانات إلى Azure Event Hubs الذي أنشأته سابقًا.

  1. استخراج محتويات ملف TelcoGenerator.zip .

  2. افتح ملف TelcoGenerator\TelcoGenerator\telcodatagen.exe.config في محرر نص من اختيارك. حيث يوجد أكثر من ملف .config، لذا تأكد من فتح الملف الصحيح.

  3. <appSettings> تحديث العنصر في ملف التكوين بالتفاصيل التالية:

    • عيِّن قيمة المفتاح EventHubName إلى قيمة EntityPath في نهاية سلسلة الاتصال.
    • تعيين قيمة Microsoft.ServiceBus.الاتصالمفتاح ionString إلى سلسلة الاتصال إلى مساحة الاسم. إذا كنت تستخدم سلسلة الاتصال إلى مركز أحداث، وليس مساحة اسم، فقم بإزالة EntityPath القيمة (;EntityPath=myeventhub) في النهاية. لا تنس إزالة الفاصلة المنقوطة التي تسبق قيمة EntityPath.
  4. حفظ الملف.

  5. بعد ذلك، افتح نافذة أمر، وقم بتغييره إلى المجلد الذي قمت بفك ضغط تطبيق TelcoGenerator. ثم إدخال الأمر التالي:

    .\telcodatagen.exe 1000 0.2 2
    

    يأخذ هذا الأمر المعلمات التالية:

    • عدد سجلات بيانات المكالمات في الساعة.
    • النسبة المئوية لاحتمالية الاحتيال، وهي عدد المرات التي يجب أن يحاكي فيها التطبيق مكالمة احتيالية. تعني القيمة 0.2 أن حوالي 20٪ من سجلات المكالمات تبدو احتيالية.
    • المدة بالساعات، وهي عدد الساعات التي يجب أن يعمل بها التطبيق. يمكنك أيضا إيقاف التطبيق في أي وقت عن طريق إنهاء العملية (Ctrl+C) في سطر الأوامر.

    بعد بضع ثوانٍ ، يبدأ التطبيق في عرض سجلات المكالمات الهاتفية على الشاشة حيث يرسلها إلى مركز الأحداث. تحتوي بيانات المكالمة الهاتفية على الحقول التالية:

    السجل التعريف
    CallrecTime الطابع الزمني لوقت بدء المكالمة.
    SwitchNum مفتاح الهاتف المستخدم لتوصيل المكالمة. في هذا المثال، تكون المفاتيح عبارة عن سلاسل تمثل البلد / المنطقة الأصلية (الولايات المتحدة، أو الصين، أو المملكة المتحدة، أو ألمانيا، أو أستراليا).
    CallingNum رقم هاتف المتصل.
    CallingIMSI الهوية الدولية لمشترك الجوال (IMSI). إنه معرف فريد للمتصل.
    CalledNum رقم هاتف مستلم المكالمة.
    CalledIMSI الهوية الدولية لمشترك الجوال (IMSI). إنه معرف فريد لمستلم المكالمة.

إنشاء مشروع وظائف Stream Analytics

الآن بعد أن أصبح لديك مجموعة من أحداث المكالمات، يمكنك إنشاء مشروع Stream Analytics التي تقرأ البيانات من مركز الحدث.

  1. لإنشاء وظيفة Stream Analytics، انتقل إلى مدخل Microsoft Azure.
  2. حدد Create a resource وابحث عن وظيفة Stream Analytics. حدد تجانب وظيفة Stream Analytics وحدد Create.
  3. في صفحة وظيفة New Stream Analytics، اتبع الخطوات التالية:
    1. بالنسبة إلى Subscription، حدد الاشتراك الذي يحتوي على مساحة اسم Event Hubs.

    2. بالنسبة لمجموعة الموارد، حدد مجموعة الموارد التي أنشأتها سابقا.

    3. في قسم Instance details ، بالنسبة إلى Name، أدخل اسما فريدا لوظيفة Stream Analytics.

    4. بالنسبة للمنطقة، حدد المنطقة التي تريد إنشاء وظيفة Stream Analytics فيها. نوصي بوضع الوظيفة ومركز الأحداث في نفس المنطقة للحصول على أفضل أداء وحتى لا تدفع لنقل البيانات بين المناطق.

    5. بالنسبة لبيئة<الاستضافة، حدد Cloud إذا لم تكن محددة بالفعل. يمكن نشر وظائف Stream Analytics في "السحابة" أو "Edge". تتيح لكالسحابةالنشر إلى Azure Cloud، وتتيح لكEdge النشر إلى جهاز IoT Edge.

    6. بالنسبة لوحدات البث، حدد 1. تمثل وحدات البث موارد الحوسبة المطلوبة لتنفيذ مهمة ما. تُعيّن هذه القيمة افتراضيًا على 1. للتعرف على تحجيم وحدات الدفق، راجع مقالة فهم وحدات البث وضبطها.

    7. حدد مراجعة + إنشاء عند أسفل الصفحة.

      لقطة شاشة تعرض صفحة مهمة إنشاء Azure Stream Analytics.

  4. في صفحة Review + create ، راجع الإعدادات، ثم حدد Create لإنشاء وظيفة Stream Analytics.
  5. بعد توزيع الوظيفة، حدد Go to resource للانتقال إلى صفحة وظيفة Stream Analytics.

تكوين إدخال المهمة

تتمثل الخطوة التالية في تحديد مصدر إدخال للمهمة لقراءة البيانات باستخدام مركز الحدث الذي أنشأته في القسم السابق.

  1. في صفحة وظيفة Stream Analytics، في قسم Job Topology في القائمة اليمنى، حدد Inputs.

  2. في صفحة Inputs ، حدد + Add input and Event hub.

    لقطة شاشة تعرض صفحة الإدخال لوظيفة Stream Analytics.

  3. في صفحة Event hub ، اتبع الخطوات التالية:

    1. بالنسبة إلى الاسم المستعار للإدخل، أدخل CallStream. الاسم المستعار للإدخل هو اسم مألوف لتعريف الإدخال الخاص بك. يمكن أن يحتوي الاسم المستعار للإدخال على أحرف أبجدية رقمية، وواصلات، وشرطات سفلية فقط، ويجب أن يتكون من 3 إلى 63 حرفًا.

    2. بالنسبة إلى Subscription، حدد اشتراك Azure حيث أنشأت مركز الأحداث. يمكن أن يكون مركز الحدث في نفس الاشتراك، أو اشتراكًا مختلفًا مثل وظيفة Stream Analytics.

    3. بالنسبة لمساحة اسم مراكز الأحداث، حدد مساحة اسم مراكز الأحداث التي أنشأتها في القسم السابق. يتم سرد جميع مساحات الأسماء المتوفرة في اشتراكك الحالي في القائمة المنسدلة.

    4. بالنسبة إلى Event hub name، حدد مركز الأحداث الذي أنشأته في القسم السابق. يتم سرد جميع مراكز الأحداث المتوفرة في مساحة الاسم المحددة في القائمة المنسدلة.

    5. بالنسبة لمجموعة مستهلكي مركز الأحداث، احتفظ بتحديد الخيار إنشاء جديد بحيث يتم إنشاء مجموعة مستهلكين جديدة على مركز الحدث. نوصي باستخدام مجموعة مستهلكين مميزة لكل وظيفة في Stream Analytics. إذا لم يتم تحديد مجموعة مستهلكين، فإن وظيفة Stream Analytics تستخدم مجموعة المستهلكين $Default . عندما تحتوي الوظيفة على ارتباط ذاتي أو تحتوي على مدخلات متعددة، فقد تتم قراءة بعض المدخلات لاحقًا بواسطة أكثر من قارئ واحد. يؤثر هذا الموقف على عدد القراء في مجموعة واحدة من المستهلكين.

    6. بالنسبة إلى "وضع المصادقة"، حدد "سلسلة الاتصال". من الأسهل اختبار البرنامج التعليمي باستخدام هذا الخيار.

    7. بالنسبة إلى اسم نهج مركز الأحداث، حدد استخدام موجود، ثم حدد النهج الذي أنشأته سابقا.

    8. حدد حفظ في أسفل الصفحة.

      لقطة شاشة تعرض صفحة تكوين مراكز الأحداث لإدخال.

إنشاء مثيل Azure Cache لـ Redis

  1. قم بإنشاء ذاكرة تخزين مؤقت في Azure Cache لـ Redis باستخدام الخطوات الموضحة في Create a cache.

  2. بعد إنشاء ذاكرة التخزين المؤقت، ضمن Settings، حدد Access Keys. قم بتدوين سلسلة الاتصال الأساسية.

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

أنشئ مهمة في Azure Functions يمكنها كتابة البيانات إلى Azure Cache for Redis

  1. راجع قسم إنشاء تطبيق Functions في وثائق Functions. تم بناء هذه العينة على:

  2. أنشئ تطبيق وظيفة HttpTrigger افتراضياً في Visual Studio Code باتباع هذا البرنامج التعليمي. يتم استخدام المعلومات التالية: اللغة: C#‎، وقت التشغيل: .NET 6 (ضمن الدالة v4)، القالب: HTTP trigger.

  3. قم بتثبيت مكتبة عميل Redis عن طريق تشغيل الأمر التالي في محطة طرفية موجودة في مجلد المشروع:

    dotnet add package StackExchange.Redis --version 2.2.88
    
  4. أضف عناصر RedisConnectionString وRedisDatabaseIndex في قسم Values من local.settings.json، وملء سلسلة الاتصال للخادم الوجهة:

    {
        "IsEncrypted": false,
        "Values": {
            "AzureWebJobsStorage": "",
            "FUNCTIONS_WORKER_RUNTIME": "dotnet",
            "RedisConnectionString": "Your Redis Connection String",
            "RedisDatabaseIndex":"0"
        }
    }
    

    فهرس قاعدة بيانات Redis هو الرقم من 0 إلى 15 الذي يحدد قاعدة البيانات في المثيل.

  5. استبدل الوظيفة بأكملها (ملف cs. في المشروع) بقصاصة التعليمة البرمجية التالية. قم بتحديث مساحة الاسم واسم الفئة واسم الوظيفة بنفسك:

    using System;
    using System.IO;
    using System.Threading.Tasks;
    using Microsoft.AspNetCore.Mvc;
    using Microsoft.Azure.WebJobs;
    using Microsoft.Azure.WebJobs.Extensions.Http;
    using Microsoft.AspNetCore.Http;
    using Microsoft.Extensions.Logging;
    using Newtonsoft.Json;
    
    using StackExchange.Redis;
    
    namespace Company.Function
    {
        public static class HttpTrigger1{
            [FunctionName("HttpTrigger1")]
            public static async Task<IActionResult> Run(
                [HttpTrigger(AuthorizationLevel.Function, "get","post", Route = null)] HttpRequest req,
                ILogger log)
            {
                // Extract the body from the request
                string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
                if (string.IsNullOrEmpty(requestBody)) {return new StatusCodeResult(204);} // 204, ASA connectivity check
    
                dynamic data = JsonConvert.DeserializeObject(requestBody);
    
                // Reject if too large, as per the doc
                if (data.ToString().Length > 262144) {return new StatusCodeResult(413);} //HttpStatusCode.RequestEntityTooLarge
    
                string RedisConnectionString = Environment.GetEnvironmentVariable("RedisConnectionString");
                int RedisDatabaseIndex = int.Parse(Environment.GetEnvironmentVariable("RedisDatabaseIndex"));
    
                using (var connection = ConnectionMultiplexer.Connect(RedisConnectionString))
                {
                    // Connection refers to a property that returns a ConnectionMultiplexer
                    IDatabase db = connection.GetDatabase(RedisDatabaseIndex);
    
                    // Parse items and send to binding
                    for (var i = 0; i < data.Count; i++)
                    {
                        string key = data[i].Time + " - " + data[i].CallingNum1;
    
                        db.StringSet(key, data[i].ToString());
                        log.LogInformation($"Object put in database. Key is {key} and value is {data[i].ToString()}");
    
                        // Simple get of data types from the cache
                        string value = db.StringGet(key);
                        log.LogInformation($"Database got: {key} => {value}");
    
                    }
                }
                return new OkResult(); // 200
            }
        }
    }
    

    عندما يتلقى Stream Analytics استثناء "كيان طلب HTTP كبير جداً" من الوظيفة، فإنه يقلل من حجم الدفعات التي يرسلها إلى الوظائف. يضمن التعليمة البرمجية التالي أن Stream Analytics لا يرسل دفعات كبيرة الحجم. تأكد من أن الحد الأقصى لعدد الدُفعات وقيم الحجم المستخدمة في المهمة متسقة مع القيم التي تم إدخالها في بوابة Stream Analytics.

  6. يمكن الآن نشر الوظيفة في Azure.

  7. افتح الدالة على مدخل Microsoft Azure، ثم قم بتعيين إعدادات التطبيق ل RedisConnectionString و RedisDatabaseIndex.

قم بتحديث مهمة Stream Analytics بالمهمة كإخراج

  1. افتح مهمة Stream Analytics على مدخل Microsoft Azure.

  2. تصفح إلى وظيفتك وحدد نظرة عامة> المخرجات >إضافة. لإضافة إخراج جديد، حدد Azure Function لخيار الحوض. يحتوي مهايئ إخراج Functionsعلى الخصائص التالية:

    اسم الخاصية الوصف
    اسم مستعار للإخراج اسم سهل الاستخدام تستخدمه في استعلام المهمة للإشارة إلى الإخراج.
    خيار الاستيراد يمكنك استخدام المهمة من الاشتراك الحالي، أو توفير الإعدادات يدوياً إذا كانت المهمة موجودة في اشتراك آخر.
    تطبيق الدالة اسم تطبيق Functions الخاص بك.
    الدالة اسم المهمة في تطبيق Functions (اسم مهمة run.csx).
    ماكس حجم الدفعة يضبط الحجم الأقصى لكل دفعة إخراج، والتي يتم إرسالها إلى وظيفتك بالبايت. بشكل افتراضي، يتم تعيين هذه القيمة إلى 262144 بايت (256 كيلوبايت).
    ماكس عدد الدُفعات يحدد الحد الأقصى لعدد الأحداث في كل دفعة يتم إرسالها إلى المهمة. القيمة الافتراضية هي 100. هذه الخاصية اختيارية.
    المفتاح يسمح لك باستخدام مهمة من اشتراك آخر. قم بتوفير القيمة الرئيسية للوصول إلى وظيفتك. هذه الخاصية اختيارية.
  3. قم بتوفير اسم لاسم الإخراج المستعار. في هذا البرنامج التعليمي، يسمى saop1، ولكن يمكنك استخدام أي اسم من اختيارك. املأ التفاصيل الأخرى.

  4. افتح مهمة Stream Analytics الخاصة بك، وقم بتحديث الاستعلام إلى ما يلي.

    هام

    يفترض نموذج البرنامج النصي التالي أنك استخدمت CallStream لاسم الإدخال وsop1 لاسم الإخراج. إذا استخدمت أسماء مختلفة، فلا تنس تحديث الاستعلام.

     SELECT
             System.Timestamp as Time, CS1.CallingIMSI, CS1.CallingNum as CallingNum1,
             CS2.CallingNum as CallingNum2, CS1.SwitchNum as Switch1, CS2.SwitchNum as Switch2
         INTO saop1
         FROM CallStream CS1 TIMESTAMP BY CallRecTime
            JOIN CallStream CS2 TIMESTAMP BY CallRecTime
             ON CS1.CallingIMSI = CS2.CallingIMSI AND DATEDIFF(ss, CS1, CS2) BETWEEN 1 AND 5
         WHERE CS1.SwitchNum != CS2.SwitchNum
    
  5. ابدأ تشغيل تطبيق telcodatagen.exe عن طريق تشغيل الأمر التالي في سطر الأوامر. يستخدم الأمر التنسيق telcodatagen.exe [#NumCDRsPerHour] [SIM Card Fraud Probability] [#DurationHours].

    telcodatagen.exe 1000 0.2 2
    
  6. ابدأ مهمة Stream Analytics.

  7. في صفحة Monitor لدالة Azure، سترى أنه يتم استدعاء الدالة.

    لقطة شاشة تعرض صفحة المراقبة لوظائف Azure مع استدعاءات الوظائف.

  8. في صفحة Azure Cache for Redis ، حدد Metrics في القائمة اليسرى، وأضف Cache Write metric، وقم بتعيين المدة إلى آخر ساعة. ترى المخطط مشابها للصورة التالية.

    لقطة شاشة تعرض صفحة المقاييس لذاكرة التخزين المؤقت Azure ل Redis.

تحقق من Azure Cache لـ Redis للحصول على النتائج

الحصول على المفتاح من سجلات Azure Functions

أولا، احصل على مفتاح سجل مدرج في ذاكرة التخزين المؤقت Azure ل Redis. في التعليمات البرمجية، يتم حساب المفتاح في دالة Azure كما هو موضح في القصاصة البرمجية التالية:

string key = data[i].Time + " - " + data[i].CallingNum1;

db.StringSet(key, data[i].ToString());
log.LogInformation($"Object put in database. Key is {key} and value is {data[i].ToString()}");
  1. استعرض للوصول إلى مدخل Microsoft Azure، وابحث عن تطبيق Azure Functions.

  2. حدد الدالات في القائمة اليسرى.

  3. حدد HTTPTrigger1 من قائمة الوظائف.

  4. حدد Monitor في القائمة اليمنى.

  5. قم بالتبديل إلى علامة التبويب سجلات .

  6. دون مفتاحا من الرسالة الإعلامية كما هو موضح في لقطة الشاشة التالية. يمكنك استخدام هذا المفتاح للعثور على القيمة في ذاكرة التخزين المؤقت Azure ل Redis.

    لقطة شاشة تعرض صفحة سجلات المراقبة لوظيفة Azure.

استخدم المفتاح للعثور على السجل في ذاكرة التخزين المؤقت Azure ل Redis

  1. استعرض للوصول إلى مدخل Microsoft Azure، وابحث عن Azure Cache لـ Redis. حدد Console.

  2. استخدم Azure Cache لأوامر Redis للتحقق من أن بياناتك موجودة في Azure Cache for Redis. (يأخذ الأمر التنسيق Get {key}.) استخدم المفتاح الذي نسخته من سجلات المراقبة لدالة Azure (في القسم السابق).

    الحصول على "KEY-FROM-THE-PREVIOUS-SECTION"

    يجب أن يقوم هذا الأمر بطباعة قيمة المفتاح المحدد:

    لقطة شاشة تعرض وحدة تحكم Redis Cache التي تعرض إخراج الأمر Get.

معالجة الخطأ وإعادة المحاولة

في حالة حدوث فشل أثناء إرسال الأحداث إلى Azure Functions، يعيد Stream Analytics محاولة معظم العمليات. تتم إعادة محاولة جميع استثناءات http حتى النجاح باستثناء خطأ http 413 (الكيان كبير جدا). يتم التعامل مع خطأ كبير جداً في الكيان باعتباره خطأ بيانات يخضع لنهج إعادة المحاولة أو الإفلات.

إشعار

تم تعيين مهلة طلبات HTTP من Stream Analytics إلى Azure Functions على 100 ثانية. إذا كان تطبيق Azure Functions الخاص بك يستغرق أكثر من 100 ثانية لمعالجة دفعة، فإن أخطاء Stream Analytics ستخرج وستعيد وضعها للمجموعة.

قد تؤدي إعادة محاولة المهلات إلى أحداث مكررة مكتوبة إلى مصدر الإخراج. عندما يعيد Stream Analytics المحاولة لدُفعة فاشلة، فإنه يعيد المحاولة لجميع الأحداث في الدُفعة. على سبيل المثال، ضع في الاعتبار مجموعة من 20 حدثاً تم إرسالها إلى Azure Functions من Stream Analytics. افترض أن Azure Functions تستغرق 100 ثانية لمعالجة الأحداث العشرة الأولى في تلك الدفعة. بعد 100 ثانية، يقوم Stream Analytics بتعليق الطلب نظرا لأنه لم يتلق استجابة إيجابية من Azure Functions، ويتم إرسال طلب آخر لنفس الدفعة. تتم معالجة الأحداث العشرة الأولى في الدفعة مرة أخرى بواسطة Azure Functions، مما يتسبب في حدوث تكرار.

المشكلات المعروفة

في مدخل Microsoft Azure، عندما تحاول إعادة تعيين قيمة الحد الأقصى لحجم الدُفعة / الحد الأقصى لعدد الدُفعات إلى فارغة (افتراضياً)، تتغير القيمة مرة أخرى إلى القيمة المُدخلة مسبقاً عند الحفظ. أدخل القيم الافتراضية لهذه الحقول يدوياً في هذه الحالة.

لا يدعم Stream Analytics استخدام توجيه HTTP على Azure Functions حالياً.

لم يتم تمكين دعم الاتصال ب Azure Functions المستضافة في شبكة ظاهرية.

تنظيف الموارد

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

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

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

في هذا البرنامج التعليمي، قمت بإنشاء وظيفة Stream Analytics بسيطة تقوم بتشغيل وظيفة Azure. لمعرفة المزيد حول وظائف Stream Analytics، تابع البرنامج التعليمي التالي: