استخدم توجيه رسائل IoT Hub لإرسال رسائل من الجهاز إلى السحابة إلى نقاط نهاية مختلفة
ملاحظة
تتوفر بعض الميزات المذكورة في هذه المقالة، مثل المراسلة من السحابة إلى الجهاز، وتوائم الأجهزة، وإدارة الأجهزة، فقط في المستوى القياسي من IoT Hub. لمزيد من المعلومات حول مستويات مركز IoT الأساسية والمعيارية، راجع كيفية اختيار مستوى مركز IoT الصحيح.
يُمكّنك توجيه الرسائل من إرسال الرسائل من أجهزتك إلى الخدمات السحابية بطريقة آلية وقابلة للتوسع وموثوقة. يمكن استخدام توجيه الرسائل من أجل:
إرسال رسائل القياس عن بعد للجهاز بالإضافة إلى الأحداث وهي أحداث دورة حياة الجهاز وأحداث تغيير توأم الجهاز وأحداث تغيير التوأم الرقمي وأحداث حالة اتصال الجهاز بنقطة النهاية المضمنة ونقاط النهاية المخصصة. تعرف على توجيه نقاط النهاية. لمعرفة المزيد حول الأحداث المرسلة من أجهزة إنترنت الأشياء أجهزة التوصيل و التشغيل، راجع فهم إنترنت الأشياء أجهزة التوصيل و التشغيل التوائم الرقمية.
تصفية البيانات قبل توجيهها إلى نقاط نهاية مختلفة من خلال تطبيق استعلامات منسقة. يسمح لك توجيه الرسائل بالاستعلام عن خصائص الرسالة ونص الرسالة بالإضافة إلى علامات مستند معلومات حالة الجهاز وخصائص مستند معلومات حالة الجهاز. تعرف على المزيد حول استخدام الاستعلامات في توجيه الرسائل.
يحتاج IoT Hub إلى إذن وصول الإضافة والحذف إلى نقاط نهاية الخدمة هذه حتى يعمل توجيه الرسائل. إذا قمت بتكوين نقاط النهاية الخاصة بك من خلال مدخل Azure، تتم إضافة الأذونات الضرورية لك. تأكد من تكوين الخدمات لدعم معدل النقل المتوقع. على سبيل المثال، إذا كنت تستخدم مراكز تنظيم الأحداث كنقطة نهاية مخصصة، فيجب عليك تكوين وحدات الإنتاجية لمركز الأحداث هذا حتى تتمكن من التعامل مع دخول الأحداث التي تخطط لإرسالها عبر توجيه رسائل IoT Hub. وبالمثل، عند استخدام قائمة انتظار ناقل الخدمة كنقطة نهاية، يجب تكوين الحد الأقصى للحجم لضمان قدرة قائمة الانتظار على الاحتفاظ بجميع البيانات التي تم إدخالها، حتى يتم إخراجها من قبل المستهلكين. عند تكوين حل IoT الخاص بك لأول مرة، قد تحتاج إلى مراقبة نقاط النهاية الأخرى وإجراء أي تعديلات ضرورية للحمل الفعلي.
يحدد IoT Hub تنسيقا مشتركا لجميع الرسائل من الجهاز إلى السحابة لقابلية التشغيل البيني عبر البروتوكولات. إذا كانت الرسالة تتطابق مع مسارات متعددة تشير إلى نفس نقطة النهاية، فإن IoT Hub يسلم الرسالة إلى نقطة النهاية هذه مرة واحدة فقط. لذلك، لا تحتاج إلى تكوين إلغاء التكرار على قائمة انتظار "ناقل الخدمة" أو موضوعه. استخدم هذا البرنامج التعليمي لمعرفة كيفية تكوين توجيه الرسائل.
توجيه نقاط النهاية
يحتوي مركز إنترنت الأشياء على نقطة نهاية مضمنة افتراضية (رسائل/أحداث) متوافقة مع مراكز الأحداث. يمكنك إنشاء نقاط نهاية مخصصة لتوجيه الرسائل إليها عن طريق ربط الخدمات الأخرى في اشتراكك بمركز إنترنت الأشياء.
يتم توجيه كل رسالة إلى جميع نقاط النهاية التي تتطابق استعلامات التوجيه الخاصة بها. بمعنى آخر ، يمكن توجيه الرسالة إلى نقاط نهاية متعددة.
إذا كانت نقطة النهاية المخصصة تحتوي على تكوينات جدار حماية، ففكر في استخدام استثناء الطرف الأول الموثوق به من Microsoft.
يدعم IoT Hub حاليا نقاط النهاية التالية:
- نقطة نهاية مدمجة
- تخزين Azure
- قوائم انتظار "ناقل الخدمة" ومواضيع "ناقل الخدمة"
- مراكز الأحداث
نقطة نهاية مضمنة كنقطة نهاية توجيه
يمكنك استخدام تكامل مراكز الأحداث القياسية ومجموعات تطوير البرامج (SDK) لتلقي الرسائل من الجهاز إلى السحابة من نقطة النهاية المضمنة (الرسائل/الأحداث). بمجرد إنشاء مسار، تتوقف البيانات عن التدفق إلى نقطة النهاية المضمنة ما لم يتم إنشاء مسار إلى نقطة النهاية هذه. حتى إذا لم يتم إنشاء أي مسارات، يجب تمكين مسار احتياطي لتوجيه الرسائل إلى نقطة النهاية المضمنة. يتم تمكين الاحتياطي بشكل افتراضي إذا قمت بإنشاء مركز الوصل باستخدام البوابة الإلكترونية أو CLI.
Azure Storage كنقطة نهاية توجيهية
هناك خدمتا تخزين يمكن ل IoT Hub توجيه الرسائل إلى: حسابات Azure Blob Storage و Azure Data Lake Storage Gen2 (ADLS Gen2). الحسابات Azure Data Lake Storage هي حسابات تخزين هرمية ممكنة لمساحة الاسم مبنية فوق مساحة تخزين blob. كلاهما يستخدم كائنات ثنائية كبيرة الحجم لتخزينها.
يدعم IoT Hub كتابة البيانات إلى Azure Storage بتنسيق Apache Avro وتنسيق JSON. القيمة الافتراضية هي «AVRO». عند استخدام ترميز JSON، يجب تعيين contentType إلى التطبيق/json وcontentEncoding إلى UTF-8 في خصائص نظام الرسائل. كل من هذه القيم غير حساسة لحالة الأحرف. إذا لم يتم تعيين ترميز المحتوى، فسيقوم IoT Hub بكتابة الرسائل بتنسيق الأساس 64 المرمز.
لا يمكن تعيين تنسيق الترميز إلا عند تكوين نقطة نهاية تخزين blob ؛ لا يمكن تحريره لنقطة نهاية موجودة. لتبديل تنسيقات الترميز لنقطة نهاية موجودة، ستحتاج إلى حذف نقطة النهاية وإعادة إنشائها بالتنسيق الذي تريده. قد تكون إحدى الإستراتيجيات المفيدة هي إنشاء نقطة نهاية مخصصة جديدة بتنسيق الترميز الذي تريده وإضافة مسار مواز إلى نقطة النهاية هذه. وبهذه الطريقة، من الممكن التحقق من بياناتك قبل حذف نقطة النهاية الموجودة.
يمكنك تحديد تنسيق الترميز باستخدام واجهة برمجة تطبيقات IoT Hub لإنشاء أو تحديث REST، وتحديدا RoutingStorageContainerProperties أو مدخل Azure أو Azure CLI أو AzurePowerShell. توضح الصورة التالية كيفية تحديد تنسيق الترميز في مدخل Azure.

يقوم IoT Hub بتجميع الرسائل وكتابة البيانات إلى التخزين كلما وصلت الدفعة إلى حجم معين أو انقضى وقت معين. يتم تعيين IoT Hub افتراضيا إلى اصطلاح تسمية الملفات التالي:
{iothub}/{partition}/{YYYY}/{MM}/{DD}/{HH}/{mm}
يمكنك استخدام أي اصطلاح تسمية ملف، ولكن يجب عليك استخدام جميع الرموز المميزة المدرجة. سيقوم IoT Hub بالكتابة إلى نقطة فارغة إذا لم تكن هناك بيانات للكتابة.
نوصي بإدراج النقط أو الملفات ثم تكرارها ، لضمان قراءة جميع النقاط أو الملفات دون وضع أي افتراضات للتقسيم. من المحتمل أن يتغير نطاق الأقسام أثناء تجاوز الفشل الذي بدأته Microsoft أو تجاوز الفشل اليدوي ل IoT Hub. يمكنك استخدام واجهة برمجة تطبيقات List Blobs لتعداد قائمة النقاط أو واجهة برمجة تطبيقات List ADLS Gen2 لقائمة الملفات. انظر النموذج التالي كإرشادات.
public void ListBlobsInContainer(string containerName, string iothub)
{
var storageAccount = CloudStorageAccount.Parse(this.blobConnectionString);
var cloudBlobContainer = storageAccount.CreateCloudBlobClient().GetContainerReference(containerName);
if (cloudBlobContainer.Exists())
{
var results = cloudBlobContainer.ListBlobs(prefix: $"{iothub}/");
foreach (IListBlobItem item in results)
{
Console.WriteLine(item.Uri);
}
}
}
لإنشاء حساب تخزين متوافق مع Azure Data Lake Gen2، قم بإنشاء حساب تخزين V2 جديد وحدد ممكنا في حقل مساحة الاسم الهرمية في علامة التبويب خيارات متقدمة كما هو موضح في الصورة التالية:

قوائم انتظار حافلات الخدمة وموضوعات ناقل الخدمة كنقطة نهاية توجيه
يجب ألا يتم تمكين "جلسات العمل" أو "الكشف عن التكرارات" في قوائم انتظار "ناقل الخدمة" والموضوعات المستخدمة كنقاط نهاية ل IoT Hub. إذا تم تمكين أي من هذين الخيارين، فستظهر نقطة النهاية على أنها غير قابلة للوصول في مدخل Azure.
محاور الأحداث كنقطة نهاية توجيه
بصرف النظر عن نقطة النهاية المتوافقة مع مراكز الأحداث المضمنة ، يمكنك أيضا توجيه البيانات إلى نقاط نهاية مخصصة من نوع Event Hubs.
قراءة البيانات التي تم توجيهها
يمكنك تكوين مسار باتباع هذا البرنامج التعليمي.
استخدم البرامج التعليمية التالية لمعرفة كيفية قراءة الرسائل من نقطة نهاية.
القراءة من نقطة النهاية المضمنة
القراءة من تخزين Blob
القراءة من مراكز الأحداث
القراءة من طوابير حافلات الخدمة
اقرأ من مواضيع حافلة الخدمة
مسار احتياطي
يرسل المسار الاحتياطي كافة الرسائل التي لا تفي بشروط الاستعلام على أي من المسارات الموجودة إلى مراكز الأحداث المضمنة (الرسائل/الأحداث)، المتوافقة مع مراكز الأحداث. إذا تم تشغيل توجيه الرسائل، يمكنك تمكين قدرة التوجيه البديل. بمجرد إنشاء توجيه، تتوقف البيانات عن التدفق إلى نقطة النهاية المضمنة، ما لم يتم إنشاء توجيه إلى نقطة النهاية هذه. إذا لم تكن هناك توجيهات إلى نقطة النهاية المضمنة وتم تمكين توجيه بديل، سيتم إرسال الرسائل التي لا تتطابق مع أي شروط استعلام على التوجيهات إلى نقطة النهاية المضمنة فقط. أيضًا، إذا تم حذف كافة التوجيهات الموجودة، يجب تمكين التوجيه البديل لتلقي كافة البيانات عند نقطة النهاية المضمنة.
يمكنك تمكين/تعطيل التوجيه البديل في جزء "توجيه الرسائل" في مدخل Azure>. يمكنك أيضا استخدام Azure Resource Manager ل FallbackRouteProperties لاستخدام نقطة نهاية مخصصة للمسار الاحتياطي.
أحداث غير بيانات تتبع الاستخدام
بالإضافة إلى القياس عن بعد للجهاز، يتيح توجيه الرسائل أيضا إرسال أحداث التغيير المزدوج للجهاز، وأحداث دورة حياة الجهاز، وأحداث تغيير التوأم الرقمي، وأحداث حالة اتصال الجهاز. على سبيل المثال، إذا تم إنشاء مسار مع تعيين مصدر البيانات إلى أحداث تغيير توأم الجهاز، فسيرسل IoT Hub رسائل إلى نقطة النهاية التي تحتوي على التغيير في توأم الجهاز. وبالمثل، إذا تم إنشاء مسار مع تعيين مصدر البيانات إلى أحداث دورة حياة الجهاز، فسيرسل IoT Hub رسالة تشير إلى ما إذا كان الجهاز أو الوحدة النمطية قد تم حذفها أو إنشاؤها. لمزيد من المعلومات حول أحداث دورة حياة الجهاز، راجع إعلامات دورة حياة الجهاز والوحدة النمطية. عند استخدام Azure IoT أجهزة التوصيل و التشغيل، يمكن للمطور إنشاء مسارات مع تعيين مصدر البيانات إلى أحداث تغيير التوأم الرقمي ويرسل IoT Hub رسائل كلما تم تعيين خاصية توأم رقمي أو تغييرها، أو استبدال توأم رقمي، أو عند حدوث حدث تغيير لتوأم الجهاز الأساسي. وأخيرا، إذا تم إنشاء مسار مع تعيين مصدر البيانات إلى أحداث حالة اتصال الجهاز، فسيرسل IoT Hub رسالة تشير إلى ما إذا كان الجهاز متصلا أو غير متصل.
يتكامل IoT Hub أيضا مع Azure Event Grid لنشر أحداث الجهاز لدعم عمليات التكامل في الوقت الفعلي وأتمتة سير العمل استنادا إلى هذه الأحداث. اطلع على الاختلافات الرئيسية بين توجيه الرسائل وشبكة الأحداث لمعرفة أيهما يعمل بشكل أفضل مع السيناريو الخاص بك.
القيود المفروضة على أحداث حالة اتصال الجهاز
تتوفر أحداث حالة اتصال الجهاز للأجهزة المتصلة باستخدام بروتوكول MQTT أو AMQP أو باستخدام أي من هذه البروتوكولات عبر WebSockets. لن تؤدي الطلبات المقدمة باستخدام HTTPS فقط إلى تشغيل إشعارات حالة اتصال الجهاز. لكي يبدأ IoT Hub في إرسال أحداث حالة اتصال الجهاز، بعد فتح اتصال، يجب على الجهاز الاتصال إما بعملية تلقي الرسائل من السحابة إلى الجهاز أو عملية القياس عن بعد للإرسال من جهاز إلى سحابة . خارج مجموعات تطوير البرامج (SDKs) لإنترنت الأشياء من Azure، تعادل هذه العمليات في MQTT عمليات الاشتراك أو النشر حول مواضيع المراسلة المناسبة. عبر AMQP ، تعادل هذه إرفاق رسالة أو نقلها على مسارات الارتباط المناسبة.
لا يقوم IoT Hub بالإبلاغ عن كل جهاز فردي يتصل ويقطع الاتصال ، ولكنه ينشر حالة الاتصال الحالية المأخوذة في لقطة دورية مدتها 60 ثانية. يعني تلقي حدث حالة الاتصال نفسه بأرقام تسلسل مختلفة أو أحداث حالة اتصال مختلفة حدوث تغيير في حالة اتصال الجهاز خلال نافذة 60 ثانية.
اختبار التوجيهات
عند إنشاء توجيه جديد أو تحرير توجيه موجود، يجب اختبار استعلام التوجيه مع رسالة عينة. يمكنك اختبار توجيهات فردية أو اختبار كافة التوجيهات في وقت واحد ولا يتم توجيه أية رسائل إلى نقاط النهاية أثناء الاختبار. يمكن استخدام مدخل Azure، وAzure Resource Manager، وAzure PowerShell، وAzure CLI للاختبار. تساعد النتائج في تحديد ما إذا كانت الرسالة العينة مطابقة للاستعلام، أو لم تتطابق الرسالة مع الاستعلام، أو تعذر تشغيل الاختبار لأن الرسالة العينة أو بناء جملة الاستعلام غير صحيح. لمعرفة المزيد، راجع Test Route وTest all routes.
زمن الانتقال
عند توجيه رسائل بيانات تتبع الاستخدام من جهاز إلى سحابة باستخدام نقاط النهاية المضمنة، هناك زيادة طفيفة في زمن الانتقال الشامل بعد إنشاء التوجيه الأول.
في معظم الحالات، يكون متوسط الزيادة في زمن الانتقال أقل من 500 مللي ثانية. يمكنك مراقبة زمن الوصول باستخدام توجيه الرسائل: زمن انتقال الرسالة للرسائل/الأحداث أو مقياس d2c.endpoints.latency.builtIn.events IoT Hub. إنشاء أو حذف أي توجيه بعد الأول لا يؤثر على زمن الانتقال الشامل.
المراقبة واستكشاف الأخطاء وإصلاحها
يوفر IoT Hub العديد من المقاييس المتعلقة بالتوجيه ونقاط النهاية لمنحك نظرة عامة على صحة المركز والرسائل المرسلة. للحصول على قائمة بجميع مقاييس IoT Hub مقسمة حسب الفئة الوظيفية، راجع المقاييس في مرجع بيانات المراقبة. يمكنك تعقب الأخطاء التي تحدث أثناء تقييم استعلام التوجيه وسلامة نقطة النهاية كما يراها IoT Hub باستخدام فئة المسارات في سجلات موارد IoT Hub. لمعرفة المزيد حول استخدام المقاييس وسجلات الموارد مع IoT Hub، راجع مراقبة IoT Hub.
يمكنك استخدام REST API Get Endpoint Health للحصول على الحالة الصحية لنقاط النهاية.
استخدم دليل استكشاف الأخطاء وإصلاحها للتوجيه للحصول على مزيد من التفاصيل ودعم استكشاف أخطاء التوجيه وإصلاحها.
الخطوات التالية
لمعرفة كيفية إنشاء مسارات الرسائل، راجع معالجة رسائل IoT Hub من جهاز إلى سحابة باستخدام المسارات.
للحصول على معلومات حول مجموعات تطوير البرامج (SDK) التي يمكنك استخدامها لإرسال رسائل من الجهاز إلى السحابة، راجع Azure IoT SDKs.