تصفية الرسائل التي تم توجيهها إلى MQTT

يمكنك استخدام إمكانية تصفية اشتراك شبكة الأحداث لتصفية رسائل MQTT التي تم توجيهها.

تصفية الموضوع

يمكنك التصفية على مواضيع MQTT للرسائل من خلال التصفية على خاصية "الموضوع" في مخطط Cloud Event. تدعم اشتراكات Event Grid تصفية الموضوع البسيطة المجانية عن طريق تحديد قيمة بداية أو نهاية للموضوع. على سبيل المثال،

  • إذا كانت كل مركبة تنشر موقعها على موضوعها الخاص (المركبات /المركبة1/gps، المركبات/السيارة2/gps، إلخ)، يمكنك استخدام عامل التصفية: ينتهي الموضوع ب "gps" لتوجيه جميع رسائل الموقع فقط.
  • إذا كانت الأجهزة من كل قسم من كل مصنع تنشر على مواضيع تحاكي التسلسل الهرمي للمصنع (على سبيل المثال، factory1/area2/machine4/telemetry)، يمكنك استخدام عامل التصفية: يبدأ الموضوع ب "factory1/area2/" لتوجيه الرسائل التي تنتمي إلى facotry1 والمنطقة 2 فقط إلى نقطة نهاية معينة. يمكنك نسخ هذا التكوين لتوجيه الرسائل من مصانع/مناطق أخرى إلى نقاط نهاية مختلفة.

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

تصفية الحمولة

بالنسبة لرسائل MQTT v5 من نوع المحتوى= "application/json; charset=utf-8" أو مؤشر تنسيق الحمولة =1، ستتم إعادة توجيه الحمولة في كائن البيانات، وسيتم تسلسل الرسالة ك JSON (أو سلسلة JSON إذا لم تكن الحمولة JSON). يمكنك تعيين نوع المحتوى و/أو مؤشر تنسيق الحمولة من التصفية على خصائص الحمولة كما هو معاد توجيهه داخل حقل البيانات كما هو.

حمولة JSON

إذا أرسلت حمولة JSON، فسيتم تسلسلها ك JSON مناسب وستتمكن من التصفية على كل خاصية في JSON الخاص بك، باستخدام التصفية المتقدمة للاشتراك في الحدث.

على سبيل المثال: إذا أرسلت الحمولة التالية:

{
	"Temp": 70,
	"humidity": 40
}

يمكنك استخدام عامل التصفية التالي لتصفية جميع الرسائل ذات قيمة درجة الحرارة فوق 100:

"advancedFilters": [{
    "operatorType": "NumberGreaterThan",
    "key": "data.Temp",
    "value": 100
}]

حمولة غير JSON

إذا أرسلت حمولة غير JSON لا تزال UFT-8، فسيتم تسلسلها كسلسلة JSON. على سبيل المثال، إذا قمت بإرسال الحمولة التالية:

{
	Hello Contoso.
}

يمكنك استخدام عامل التصفية التالي لتصفية جميع الرسائل التي تتضمن كلمة "Contoso":

"advancedFilters": [{
    "operatorType": "StringContains",
    "key": "data",
    "value": "Contoso"
}]

تصفية الإثراء

تتم إضافة عمليات الإثراء إلى سمات CloudEvent التي تم توجيهها، ويمكنك التصفية عليها باستخدام التصفية المتقدمة للاشتراك في الحدث.

على سبيل المثال، إذا أضفت الإثراء التالي:

{
	"key": "clienttype",
	"value": "${client.attributes.type}"
}

يمكنك استخدام عامل التصفية التالي لتصفية جميع الرسائل الواردة من العملاء من نوع "أداة الاستشعار":

"advancedFilters": [{"
    operatorType": "StringContains",
    "key": "clienttype", 
    "value": "sensor"
}]

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

استخدم المقالات التالية لمعرفة المزيد حول التوجيه:

Quickstart:

Concepts: