ما هي أنماط التكوين في Azure IoT Data Processor Preview؟

هام

معاينة عمليات Azure IoT - التي تم تمكينها بواسطة Azure Arc قيد المعاينة حاليا. يجب عدم استخدام برنامج المعاينة هذا في بيئات الإنتاج.

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

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

المسار

تستخدم العديد من مراحل البنية الأساسية لبرنامج ربط العمليات التجارية مسارا لتحديد موقع في الرسالة حيث يجب قراءة البيانات أو كتابتها إليها. لتعريف هذه المواقع، يمكنك استخدام Path حقل يستخدم بناء جملة jq:

  • يتم تعريف المسار كسلسلة في واجهة المستخدم، ويستخدم بناء جملة jq .
  • يتم تعريف مسار بالنسبة لجذر رسالة معالج البيانات. يشير المسار . إلى الرسالة بأكملها.
  • تبدأ جميع المسارات ب ..
  • يمكن أن يكون كل جزء من المسار:
    • .<identifier> لمفتاح كائن أبجدي رقمي مثل .topic.
    • ."<identifier>" لمفتاح عنصر عشوائي مثل ."asset-id".
    • ["<identifier>"] لمفتاح عنصر عشوائي مثل ["asset-id"].
    • [<index>] لفهرس صفيف مثل [2].
  • يمكن ربط الشرائح لتشكيل مسارات معقدة.

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

النمط Regex مثال
.<identifier> \.[a-zA-Z_][a-zA-Z0-9_]* .topic
."<identifier>" \."(\\"\|[^"])*" ."asset-id"
["<identifier>"] \["(\\"\|[^"])*"\] ["asset-id"]
[<index>] \[-?[0-9]+\] [2]

لمعرفة المزيد، راجع المسارات في دليل jq.

أمثلة المسار

المسارات التالية هي أمثلة تستند إلى بنية الرسالة لمعالج البيانات القياسي:

  • .systemProperties ارجاع:

    {
      "partitionKey": "foo",
      "partitionId": 5,
      "timestamp": "2023-01-11T10:02:07Z"
    }
    
  • .payload.humidity ارجاع:

    10
    
  • .userProperties[0] ارجاع:

    {
      "key": "prop1",
      "value": "value1"
    }
    
    
  • .userProperties[0].value ارجاع:

    value1
    

المدة

تتطلب عدة مراحل تعريف مدة الفترة الزمنية. على سبيل المثال، النوافذ في مرحلة تجميعية ومهلات في مرحلة الاستدعاء. تستخدم هذه المراحل حقلا Duration لتمثيل هذه القيمة.

تستخدم العديد من مراحل البنية الأساسية لبرنامج ربط العمليات التجارية مدة زمنية. على سبيل المثال، تحتوي المرحلة التجميعية على خاصية windows وتحتوي مراحل الاستدعاء على خاصية المهلات. لتعريف هذه الفترة الزمنية Duration ، يمكنك استخدام حقل:

المدة هي قيمة سلسلة بالتنسيق <number><char><number><char> التالي حيث يمكن أن يكون 'char':

  • h:ساعه
  • m:دقيقه
  • s:الثانيه
  • ms:ميلي ثانيه
  • us، µs: ميكرو ثانية
  • ns: نانو ثانية

أمثلة المدة

  • 2h
  • 1h10m30s
  • 3m9ms400ns

القوالب

تتطلب عدة مراحل تعريف سلسلة بمزيج من القيم الديناميكية والثابتة. تستخدم هذه المراحل قيم القالب .

تستخدم قوالب معالج البيانات بناء جملة Mustache لتعريف القيم الديناميكية في السلاسل.

قيم النظام الديناميكية المتوفرة للاستخدام في القوالب هي:

  • instanceId: معرف مثيل معالج البيانات.
  • pipelineId: معرف البنية الأساسية لبرنامج ربط العمليات التجارية الذي تعد المرحلة جزءا منه.
  • YYYY: السنة الحالية.
  • MM: الشهر الحالي.
  • DD: التاريخ الحالي.
  • HH: الساعة الحالية.
  • mm: الدقيقة الحالية.

حاليا، يمكنك استخدام القوالب لتعريف مسارات الملفات في مرحلة الوجهة.

الحقول الثابتة والديناميكية

تتطلب بعض المراحل تعريف القيم التي يمكن أن تكون سلاسل ثابتة أو قيمة ديناميكية مشتقة Pathمن في رسالة. لتعريف هذه القيم، يمكنك استخدام الحقول الثابتة أو الديناميكية .

تتم كتابة الحقل الثابت أو الديناميكي دائما ككائن مع type حقل يحتوي على إحدى القيمتين: static أو dynamic. يختلف المخطط استنادا typeإلى .

الحقول الثابتة

التعريف الثابت هو قيمة ثابتة ل type هي static. يتم الاحتفاظ بالقيمة الفعلية في value.

الحقل نوع الوصف مطلوبة افتراضي مثال
النوع سلسلة const نوع الحقل. ‏‏نعم‬ - static
قيمة أي القيمة الثابتة التي يجب استخدامها للتكوين (عادة سلسلة). ‏‏نعم‬ - "static"

توضح الأمثلة التالية بعض تعريفات الحقول الثابتة:

{
    "some-field": {
        "type": "static",
        "value": "some-static-value"
    }
}
{
    "some-boolean-field": {
        "type": "static",
        "value": true
    }
}
{
    "some-complex-field": {
        "type": "static",
        "value": {
            "some": [
                "nested",
                "data"
            ]
        }
    }
}

الحقول الديناميكية

القيمة الثابتة ل type هي dynamic. القيمة هي مسار jq.

الحقل نوع الوصف مطلوبة افتراضي مثال
النوع سلسلة const نوع الحقل ‏‏نعم‬ - dynamic
قيمة مسار المسار في كل رسالة حيث يمكن استرداد قيمة للحقل ديناميكيا. ‏‏نعم‬ - .systemProperties.partitionKey

يوضح المثال التالي تعريف حقل ديناميكي:

{
    "some-field": {
        "type": "dynamic",
        "value": ".systemProperties.topic"
    }
}

إعادة المحاولة

يمكن أن تستخدم المراحل التي تستدعي الخدمات الخارجية عمليات إعادة المحاولة للتعامل مع حالات الفشل المؤقتة وتحسين الموثوقية. يمكنك تجاوز نهج إعادة المحاولة الافتراضي عند تكوين مرحلة.

هناك أربعة نهج محتملة لإعادة المحاولة:

  • default: نهج إعادة المحاولة الافتراضي هو استخدام إعادة محاولة التراجع الأسي مع ثلاث محاولات وفاصل إعادة المحاولة الأولي 500 مللي ثانية.
  • none: لا يتم تنفيذ أي محاولات.
  • fixed: يعيد نهج إعادة المحاولة الثابت محاولة عدد ثابت من المرات مع فاصل زمني ثابت بين كل إعادة محاولة.
  • exponential: يقوم نهج إعادة المحاولة الأسي بإعادة المحاولة لعدد ثابت من المرات مع فاصل زمني متزايد بشكل كبير بين كل إعادة محاولة.

إذا اخترت default أو none، فلن تحتاج إلى توفير أي تكوين إضافي. إذا اخترت fixed أو exponential، يجب توفير المزيد من التكوين:

ثابت

الحقل نوع ‏‏الوصف مطلوب؟ الإعداد الافتراضي مثال
type سلسلة اسم نوع إعادة المحاولة: fixed ‏‏نعم‬ غير متوفر fixed
interval المدة الفترة الزمنية الأولية بين كل إعادة محاولة. لا 500ms 2s
maxRetries العدد الصحيح عدد مرات إعادة المحاولة، من 1 إلى 20 لا 3 20

المتزايد

الحقل نوع ‏‏الوصف مطلوب؟ الإعداد الافتراضي مثال
type سلسلة اسم نوع إعادة المحاولة: exponential ‏‏نعم‬ غير متوفر exponential
interval المدة الفترة الزمنية الأولية بين كل إعادة محاولة. لا 500ms 2s
maxRetries العدد الصحيح عدد مرات إعادة المحاولة، من 1 إلى 20 لا 3 20
maxInterval المدة الحد الأقصى للفترة الزمنية بين كل إعادة محاولة. لا بلا 100s

يتم حساب أوقات إعادة المحاولة الأسية كما يلي: إذا بدأ الفاصل الزمني ب 500ms، فإن فواصل إعادة المحاولة القليلة التالية هي randInt(500ms, 500ms * 2^1)، ، randInt(500ms, 500ms * 2^2)... ، randInt(500ms, 500ms * 2^maxRetries).

دُفعة

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

حاليا، يمكنك تعريف الدفعة استنادا إلى الوقت. لتعريف الإرسال في دفعات، تحتاج إلى تحديد الفاصل الزمني والمسار. Path يحدد أي جزء من الرسالة الواردة لتضمينه في الإخراج المجمع.

الحقل نوع الوصف مطلوبة افتراضي مثال
الوقت المدة المدة التي تستغرقها البيانات المجمعة لا 60s (في الوجهات التي يتم فيها فرض الإرسال في دفعات) 120s
المسار مسار المسار إلى القيمة في كل رسالة لتضمينها في الإخراج. لا .payload .payload.output