توجيه رسائل MQTT في Azure Event Grid

تسمح لك Event Grid بتوجيه رسائل MQTT إلى خدمات Azure أو خطافات الويب لمزيد من المعالجة. وفقا لذلك، يمكنك إنشاء حلول شاملة من خلال الاستفادة من بيانات IoT لتحليل البيانات والتخزين والمرئيات، من بين حالات استخدام أخرى.

Diagram of the MQTT message routing.

كيف يمكنني استخدام ميزة التوجيه؟

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

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

تكوين التوجيه:

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

  • موضوع مساحة الاسم كوجهة توجيه:
    • إنشاء موضوع مساحة اسم شبكة الأحداث حيث سيتم توجيه جميع رسائل MQTT.
    • إنشاء اشتراك حدث من نوع الدفع لتوجيه هذه الرسائل إلى إحدى خدمات Azure المدعومة أو خطافات ويب مخصصة أو اشتراك حدث من نوع قائمة الانتظار لسحب الرسائل مباشرة من موضوع مساحة الاسم من خلال التطبيق الخاص بك.
    • تعيين تكوين التوجيه الذي يشير إلى الموضوع الذي قمت بإنشائه في الخطوة الأولى.

Diagram of the MQTT message routing to namespace topics.

Diagram of the MQTT message routing to custom topics.

إشعار

سيؤدي تعطيل الوصول إلى الشبكة العامة على مساحة الاسم إلى فشل توجيه MQTT.

الفرق بين مواضيع مساحة الاسم والموضوعات المخصصة كوجهة توجيه

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

نقطة المقارنة موضوع مساحة الاسم موضوع مخصص
الإنتاجية مرتفع، يصل إلى 40 ميغابايت/ثانية (دخول) و80 ميغابايت/ثانية (خروج) منخفض، يصل إلى 5 ميغابايت/ثانية (الدخول والخروج)
تسليم السحب ‏‏نعم‬
دفع التسليم إلى مراكز الأحداث نعم (في المعاينة) ‏‏نعم‬
دفع التسليم إلى خدمات Azure (الوظائف، خطافات الويب، قوائم انتظار وموضوعات ناقل خدمة Microsoft Azure، اتصالات الترحيل المختلطة، وقوائم انتظار التخزين) ‏‏نعم‬
استبقاء الرسائل 7 أيام يوم واحد
متطلبات تعيين الدور غير مطلوب نظرا لأن وسيط MQTT وموضوع مساحة الاسم تحت نفس مساحة الاسم مطلوب نظرا لأن مساحة الاسم التي تستضيف وظيفة وسيط MQTT والموضوع المخصص هي موارد مختلفة

متطلبات الموضوع المخصصة لشبكة الأحداث للتوجيه

يحتاج الموضوع المخصص لشبكة الأحداث المستخدم للتوجيه إلى تلبية المتطلبات التالية:

  • يجب تعيينه لاستخدام مخطط أحداث السحابة v1.0
  • يجب أن يكون في نفس المنطقة مثل مساحة الاسم.
  • تحتاج إلى تعيين دور "EventGrid Data Sender" لنفسك أو إلى الهوية المدارة المحددة في الموضوع المخصص لشبكة الأحداث قبل تطبيق تكوين التوجيه.
    • في المدخل، انتقل إلى مورد موضوع Event Grid الذي تم إنشاؤه.
    • في عنصر القائمة "Access control (IAM)"، حدد Add a role assignment.
    • في علامة التبويب "الدور"، حدد "مرسل بيانات شبكة الأحداث"، ثم حدد التالي.
    • في علامة التبويب "Members"، حدد +Select members، ثم اكتب اسم مستخدم AD في المربع "Select" الذي يظهر (على سبيل المثال، user@contoso.com).
    • حدد اسم مستخدم AD، ثم حدد "Review + assign"

تكوين مدخل Azure

استخدم الخطوات التالية لتكوين التوجيه:

  • انتقل إلى مساحة الاسم في مدخل Microsoft Azure.
  • ضمن التوجيه، تحقق من تمكين التوجيه.
  • ضمن نوع الموضوع، حدد إما موضوع مساحة الاسم أو موضوع مخصص
  • ضمن الموضوع، حدد الموضوع الذي قمت بإنشائه حيث سيتم توجيه جميع رسائل MQTT.
  • إذا تم تحديد موضوع مخصص، يظهر قسم الهوية المدارة للتسليم. حدد أحد الخيارات التالية للهوية التي سيتم استخدامها لمصادقة وسيط MQTT أثناء تسليم رسائل MQTT إلى الموضوع المخصص:
    • بلا: في هذه الحالة، تحتاج إلى تعيين دور "EventGrid Data Sender" لنفسك في الموضوع المخصص.
    • الهوية المعينة من قبل النظام: في هذه الحالة، تحتاج إلى تمكين الهوية المعينة من قبل النظام على مساحة الاسم كشرط أساسي وتعيين دور "EventGrid Data Sender" إلى الهوية المعينة من قبل النظام في الموضوع المخصص.
    • الهوية المعينة من قبل المستخدم: في هذه الحالة، تحتاج إلى تمكين الهوية المعينة من قبل المستخدم على مساحة الاسم كشرط أساسي وتعيين دور "EventGrid Data Sender" إلى الهوية المحددة في الموضوع المخصص.
      • إذا تم تحديد الهوية المعينة من قبل المستخدم، تظهر قائمة منسدلة لتمكينك من تحديد الهوية المطلوبة.
  • حدد تطبيق.

Screenshot showing the routing configuration through the portal.

للحصول على إرشادات تكوين الإثراء، انتقل إلى تكوين مدخل الإثراء.

تكوين Azure CLI

az resource create --resource-type Microsoft.EventGrid/namespaces --id /subscriptions/<Subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.EventGrid/namespaces/<Namespace Name> --is-full-object --api-version 2023-06-01-preview --properties @./resources/NS.json

NS.json

"properties": {
	"inputSchema": "CloudEventSchemaV1_0",
	"topicSpacesConfiguration": {
	    "state": "Enabled",           
	    "routeTopicResourceId": "/subscriptions/<Subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.EventGrid/topics/<Event Grid topic name>",
        "routingIdentityInfo": {
                "type": "UserAssigned", //Allowed values: None, SystemAssigned, UserAssigned
                "userAssignedIdentity": "/subscriptions/<Subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<User-assigned identity>" //needed only if UserAssigned was the value of type
            },

	}
}

للحصول على إرشادات تكوين الإثراء، انتقل إلى تكوين CLI الإثراء.

سلوك توجيه رسالة MQTT

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

يصف الجدول التالي سلوك توجيه رسائل MQTT استنادا إلى أخطاء مختلفة.

خطأ وصف الخطأ سلوك
TopicNotFoundError تم حذف الموضوع المخصص الذي تم تكوينه لتلقي جميع الرسائل التي تم توجيهها إلى MQTT. تسقط Event Grid رسالة MQTT التي كان من المفترض توجيهها.
خطأ مصادقة تم حذف دور EventGrid Data Sender للموضوع المخصص الذي تم تكوينه كوجهة للرسائل التي تم توجيهها إلى MQTT. تسقط Event Grid رسالة MQTT التي كان من المفترض توجيهها.
TooManyRequests يتجاوز عدد رسائل MQTT التي تم توجيهها في الثانية حد النشر للموضوع المخصص. تعيد Event Grid محاولة توجيه رسالة MQTT.
ServiceError خطأ خادم غير متوقع لسبب تشغيل الخادم. تعيد Event Grid محاولة توجيه رسالة MQTT.

أثناء عمليات إعادة المحاولة، تستخدم Event Grid نهج إعادة محاولة التراجع الأسي لتوجيه رسالة MQTT. ستقوم Event Grid بإعادة محاولة التسليم وفقًا للجدول الزمني التالي على أساس أفضل الجهود:

  • 10 ثوان
  • 30 seconds
  • دقيقة واحدة
  • 5 دقائق
  • 10 دقيقة
  • 30 دقيقة
  • ساعة
  • ثلاث ساعات
  • ست ساعات
  • كل 12 ساعة

إذا نجحت رسالة MQTT التي تم توجيهها والتي تم وضعها في قائمة الانتظار لإعادة الحياة، تحاول Event Grid إزالة الرسالة من قائمة انتظار إعادة المحاولة على أساس أفضل جهد، ولكن قد لا يزال يتم تلقي التكرارات.

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

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

Quickstart:

Concepts: