إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
نقل القياس عن بعد في قائمة انتظار الرسائل (MQTT) هو بروتوكول نقل رسائل للنشر والاشتراك تم تصميمه للبيئات المقيدة. MQTT فعال وقابل للتطوير وموثوق به ، مما يجعله شائعا للاتصال في سيناريوهات إنترنت الأشياء (IoT). يدعم وسيط MQTT العملاء الذين ينشرون الرسائل ويشتركون فيها عبر MQTT v3.1.1 و MQTT v3.1.1 عبر WebSocket و MQTT v5 و MQTT v5 عبر WebSocket. يدعم وسيط MQTT أيضا الاتصال عبر إصدارات MQTT (MQTT 3.1.1 و MQTT 5).
يدعم وسيط MQTT في Azure Event Grid أيضا الأجهزة والخدمات التي ترسل رسائل MQTT عبر HTTPS، مما يبسط التكامل مع العملاء غير التابعين ل MQTT. تسمح لك Event Grid بإرسال رسائل MQTT إلى السحابة لتحليل البيانات والتخزين والمرئيات، من بين حالات استخدام أخرى. هذه الميزة في وضع المعاينة حاليًا.
قدم MQTT v5 العديد من التحسينات عبر MQTT v3.1.1 لتقديم اتصال أكثر سلاسة وشفافية وكفاءة. وأضاف:
- إعداد تقارير عن الأخطاء بشكل أفضل.
- تواصل أكثر شفافية مع العملاء من خلال ميزات مثل خصائص المستخدم ونوع المحتوى.
- مزيد من التحكم للعملاء في الاتصال من خلال ميزات مثل انتهاء صلاحية الرسائل والجلسة.
- أنماط هامة قياسية مثل نمط الطلب والاستجابة.
تدفق الاتصال
يجب أن يتصل عملاء MQTT عبر أمان طبقة النقل (TLS) 1.2 أو TLS 1.3. تفشل محاولات تخطي هذه الخطوة مع الاتصال.
عند الاتصال بوسيط MQTT، استخدم المنافذ التالية أثناء الاتصال عبر MQTT:
- MQTT v3.1.1 وMQTT v5 على منفذ TCP 8883
- MQTT v3.1.1 عبر WebSocket و MQTT v5 عبر WebSocket على منفذ TCP 443
يجب أن تتضمن حزمة CONNECT الخصائص التالية:
-
ClientIdالحقل مطلوب، ويجب أن يتضمن اسم جلسة عمل العميل. يجب أن يكون اسم جلسة العمل فريدا عبر مساحة الاسم. يمكنك استخدام اسم مصادقة العميل كاسم جلسة العمل إذا كان كل عميل يستخدم جلسة عمل واحدة لكل عميل. إذا كان أحد العملاء يستخدم جلسات متعددة، فيجب عليه استخدام قيم مختلفة لكلClientIdجلسة من جلساته. -
Usernameالحقل مطلوب إذا لم تقم بتحديد قيمة فيalternativeAuthenticationNameSourcesأثناء إنشاء مساحة الاسم. في هذه الحالة، تحتاج إلى تقديم اسم مصادقة العميل فيUsernameالحقل. يجب أن يتطابق هذا الاسم مع اسم المصادقة المقدم والقيمة الموجودة في حقل شهادة العميل التي تم تحديدها أثناء إنشاء مورد العميل.
تعرف على المزيد حول مصادقة العميل.
دعم متعدد الجلسات
يتيح الدعم متعدد الجلسات لعملاء MQTT لتطبيقك الحصول على تنفيذ أكثر قابلية للتطوير وموثوقية من خلال الاتصال بوسيط MQTT بجلسات نشطة متعددة في نفس الوقت.
تكوين مساحة الاسم
قبل استخدام هذه الميزة، تحتاج إلى تكوين مساحة الاسم للسماح بجلسات متعددة لكل عميل. لتكوين جلسات متعددة لكل عميل في مدخل Microsoft Azure، اتبع الخطوات التالية:
- انتقل إلى مساحة الاسم في مدخل Microsoft Azure.
- ضمن التكوين، قم بتغيير قيمة الحد الأقصى لجلسات عمل العميل لكل اسم مصادقة إلى عدد الجلسات التي تريدها لكل عميل.
- حدد تطبيق.
إشعار
بالنسبة لتكوين Azure CLI، قم بتحديث الخاصية MaxClientSessionsPerAuthenticationName في حمولة مساحة الاسم بالقيمة التي تريدها.
تدفق الاتصال
يجب أن تتضمن حزم CONNECT لكل جلسة الخصائص التالية:
- قم بتوفير الخاصية
Usernameفي حزمة CONNECT للإشارة إلى اسم مصادقة العميل. - قم بتوفير الخاصية
ClientIDفي حزمة CONNECT للإشارة إلى اسم الجلسة، على سبيل المثال إذا كانت هناك قيمة واحدة أو أكثر لمعرف العميل لكل اسم مستخدم.
على سبيل المثال، تمكن المجموعات التالية من Username حزمة CONNECT والموجودة ClientId فيها العميل Mgmt-application من الاتصال بوسيط MQTT خلال ثلاث جلسات مستقلة:
-
الجلسة الأولى:
-
UsernameMgmt-application -
ClientIdMgmt-Session1
-
-
الجلسة الثانية:
-
UsernameMgmt-application -
ClientIdMgmt-Session2
-
-
الجلسة الثالثة:
-
UsernameMgmt-application -
ClientIdMgmt-Session3
-
لمزيد من المعلومات، راجع إنشاء جلسات متعددة لعميل واحد.
التعامل مع الجلسات
- إذا حاول عميل تولي جلسة عمل نشطة لعميل آخر عن طريق تقديم اسم جلسة العمل الخاصة به باسم مصادقة مختلف، يتم رفض طلب الاتصال الخاص به بخطأ غير مصرح به. على سبيل المثال، إذا حاول العميل "ب" الاتصال بالجلسة 123 التي تم تعيينها في ذلك الوقت للعميل "أ"، رفض طلب اتصال العميل "ب". ومع ذلك، إذا حاول نفس العميل إعادة الاتصال بأسماء الجلسات نفسها ونفس اسم المصادقة، فيمكنه تولي جلسته الحالية.
- إذا تم حذف مورد عميل دون إنهاء جلسة العمل الخاصة به، فلن يتمكن العملاء الآخرون من استخدام اسم جلسة العمل الخاصة به حتى تنتهي جلسة العمل. على سبيل المثال، إذا أنشأ العميل "ب" جلسة باسم الجلسة 123 ثم تم حذف العميل "ب"، فلن يتمكن العميل "أ" من الاتصال بالجلسة 123 حتى تنتهي صلاحيتها.
- ينطبق حد عدد جلسات العمل لكل عميل على الجلسات عبر الإنترنت وغير المتصلة في أي وقت. على سبيل المثال، ضع في اعتبارك مساحة اسم مع تعيين الحد الأقصى لجلسات عمل العميل لكل اسم مصادقة إلى 1. يتصل العميل "أ" بجلسة عمل مستمرة 123 ثم يتم قطع الاتصال. يتعذر على العميل "أ" الاتصال بجلسة عمل جديدة 456 لأن جلسته 123 لا تزال نشطة حتى إذا كانت غير متصلة. وفقا لذلك، نوصي بأن يعيد نفس العميل دائما الاتصال بنفس أسماء الجلسات الثابتة بدلا من إنشاء اسم جلسة عمل جديد مع كل إعادة اتصال.
ميزات MQTT
يدعم وسيط Event Grid MQTT ميزات MQTT التالية.
جودة الخدمة
يدعم وسيط MQTT جودة الخدمة (QoS) المستويين 0 و 1 ، والذي يحدد ضمان تسليم الرسائل على حزم PUBLISH و SUBSCRIBE بين العملاء ووسيط MQTT.
- تضمن جودة الخدمة 0 التسليم مرة واحدة على الأكثر: لا يقر المشترك بالرسائل التي تحتوي على جودة الخدمة 0، ولا يعيد الناشر إرسالها.
- تضمن جودة الخدمة 1 التسليم مرة واحدة على الأقل: يقر المشترك بالرسائل، ويعيد الناشر إرسالها إذا لم يتم الاعتراف بها.
تمكن QoS عملائك من التحكم في كفاءة الاتصال وموثوقيته.
جلسات العمل المستمرة
يدعم وسيط MQTT الجلسات المستمرة ل MQTT v3.1.1 بحيث يحتفظ وسيط MQTT بمعلومات حول جلسة العميل عند قطع اتصاله لضمان موثوقية الاتصال. تتضمن هذه المعلومات اشتراكات العميل ورسائل جودة الخدمة 1 الفائتة أو غير المعترف بها. يمكن للعملاء تكوين جلسة عمل مستمرة عن طريق تعيين العلامة cleanSession في حزمة CONNECT إلى false.
بدء التنظيف وانتهاء جلسة العمل
قدم MQTT v5 ميزات البداية النظيفة وانتهاء صلاحية الجلسة كتحسن على MQTT v3.1.1 في معالجة استمرار الجلسة. تسمح البداية النظيفة للعميل ببدء جلسة جديدة مع وسيط MQTT بعد تجاهل أي بيانات جلسة سابقة. يسمح انتهاء الجلسة للعميل بإبلاغ وسيط MQTT عندما تعتبر الجلسة غير النشطة منتهية الصلاحية وإزالتها تلقائيا.
في حزمة CONNECT، يمكن للعميل تعيين العلامة Clean Start إلى true. يمكن للعميل أيضا تعيين فاصل زمني قصير لانتهاء صلاحية الجلسة لأسباب أمنية أو لتجنب أي تعارضات محتملة في البيانات قد تكون حدثت أثناء الجلسة السابقة. يمكن للعميل أيضا تعيين Clean Start العلامة على false أو فاصل زمني طويل لانتهاء صلاحية الجلسة لضمان موثوقية وكفاءة الجلسات المستمرة.
الحد الأقصى لتكوين الفاصل الزمني لانتهاء صلاحية الجلسة
يمكنك تكوين الحد الأقصى للفاصل الزمني لانتهاء صلاحية الجلسة المسموح به لجميع عملائك الذين يتصلون بمساحة اسم شبكة الأحداث. بالنسبة لعملاء MQTT v3.1.1، يتم تطبيق الحد المكون كفاصل زمني افتراضي لانتهاء صلاحية الجلسة لجميع الجلسات الثابتة. بالنسبة لعملاء MQTT v5، يتم تطبيق الحد الذي تم تكوينه كقيمة قصوى لخاصية الفاصل الزمني لانتهاء صلاحية جلسة العمل في حزمة CONNECT. يتم تعديل أي قيمة تتجاوز الحد. القيمة الافتراضية لخاصية مساحة الاسم هذه هي ساعة واحدة، ويمكن أن تمتد حتى ثماني ساعات. لتكوين الحد الأقصى للفاصل الزمني لانتهاء صلاحية جلسة العمل في مدخل Microsoft Azure، اتبع الخطوات التالية:
- انتقل إلى مساحة الاسم في مدخل Microsoft Azure.
- ضمن التكوين، قم بتغيير قيمة الحد الأقصى للفاصل الزمني لانتهاء صلاحية جلسة العمل بالساعات إلى الحد الذي تريده.
- حدد تطبيق.
تجاوز جلسة العمل
يحتفظ وسيط MQTT بقائمة انتظار من الرسائل لكل جلسة MQTT نشطة غير متصلة، حتى يتصل العميل بوسيط MQTT مرة أخرى لتلقي الرسائل في قائمة الانتظار. إذا لم يتصل العميل لتلقي رسائل جودة الخدمة 1 في قائمة الانتظار، فإن قائمة انتظار الجلسة تجمع الرسائل حتى تصل إلى الحد الأقصى البالغ 100 رسالة أو 1 ميغابايت. بعد أن تصل قائمة الانتظار إلى الحد الأقصى لها خلال فترة التشغيل، يتم إنهاء الجلسة.
رسائل الوصية الأخيرة والوصية
تقوم آخر وصية وعهد (LWT) بإعلام عملاء MQTT بقطع الاتصال المفاجئ لعملاء MQTT الآخرين. يمكنك استخدام LWT لضمان تدفق الاتصال الذي يمكن التنبؤ به وموثوق به بين عملاء MQTT أثناء قطع الاتصال غير المتوقع. هذه الإمكانية ذات قيمة للسيناريوهات التي يكون فيها الاتصال في الوقت الفعلي وموثوقية النظام والإجراءات المنسقة أمرا بالغ الأهمية. يمكن للعملاء الذين يتعاونون لأداء المهام المعقدة التفاعل مع رسائل LWT من بعضهم البعض عن طريق تعديل سلوكهم أو إعادة توزيع المهام أو تولي مسؤوليات معينة للحفاظ على أداء النظام واستقراره.
لاستخدام LWT، يمكن للعميل تحديد رسالة الإرادة وموضوع الإرادة وبقية خصائص الإرادة في حزمة CONNECT أثناء الاتصال. عندما ينقطع اتصال العميل فجأة ، ينشر وسيط MQTT رسالة الإرادة لجميع العملاء الذين اشتركوا في موضوع الإرادة. لتقليل الضوضاء الناتجة عن قطع الاتصال المتقلب، يمكن للعميل تعيين الفاصل الزمني للتأخير إلى قيمة أكبر من الصفر. في هذه الحالة، إذا انقطع اتصال العميل فجأة ولكنه استعاد الاتصال قبل انتهاء فترة التأخير، فلن يتم نشر رسالة الإرادة.
خصائص المستخدم
يدعم وسيط MQTT خصائص المستخدم على حزم MQTT v5 PUBLISH التي يمكنك استخدامها لإضافة أزواج مفاتيح/قيم مخصصة في رأس الرسالة لتوفير مزيد من السياق حول الرسالة. حالات الاستخدام لخصائص المستخدم متعددة الاستخدامات. يمكنك استخدام هذه الميزة لتضمين الغرض من الرسالة أو أصلها بحيث يمكن للمستلم معالجة الرسالة دون تحليل الحمولة، مما يوفر موارد الحوسبة. على سبيل المثال، يمكن أن تؤدي الرسالة التي تحتوي على خاصية مستخدم تشير إلى الغرض منها على أنه "تحذير" إلى تشغيل منطق معالجة مختلف عن تلك التي تهدف إلى "المعلومات".
نمط الطلب-الاستجابة
قدم MQTT v5 حقول في رأس حزمة MQTT PUBLISH توفر سياقا لرسالة الاستجابة في نمط استجابة الطلب. تتضمن هذه الحقول موضوع استجابة ومعرف ارتباط يمكن للمستجيب استخدامه في الاستجابة دون تكوين مسبق. تتيح معلومات الاستجابة اتصالا أكثر كفاءة لنمط الاستجابة للطلب القياسي المستخدم في سيناريوهات القيادة والتحكم.
الفاصل الزمني لانتهاء صلاحية الرسالة
في MQTT v5، يسمح الفاصل الزمني لانتهاء صلاحية الرسالة للرسائل بعمر افتراضي قابل للتكوين. يتم تعريف الفاصل الزمني لانتهاء صلاحية الرسالة على أنه الفاصل الزمني بين الوقت الذي يتم فيه نشر الرسالة إلى وسيط MQTT والوقت الذي يحتاج فيه الوسيط إلى تجاهل الرسالة التي لم يتم تسليمها. هذه الميزة مفيدة في السيناريوهات التي تكون فيها الرسائل صالحة لفترة زمنية معينة فقط، مثل الأوامر الحساسة للوقت أو دفق البيانات في الوقت الفعلي أو تنبيهات الأمان. من خلال تعيين فاصل زمني لانتهاء صلاحية الرسالة ، يمكن لوسيط MQTT إزالة الرسائل القديمة تلقائيا. تضمن هذه الخطوة توفر المعلومات ذات الصلة فقط للمشتركين. إذا تم تعيين الفاصل الزمني لانتهاء صلاحية الرسالة إلى صفر، فهذا يعني أنه يجب ألا تنتهي صلاحية الرسالة أبدا.
الأسماء المستعارة لموضوع
في MQTT v5، تسمح الأسماء المستعارة للموضوع للعميل باستخدام اسم مستعار أقصر بدلا من اسم الموضوع الكامل في الرسالة المنشورة. يحتفظ وسيط MQTT بتعيين بين الاسم المستعار للموضوع واسم الموضوع الفعلي. يمكن لهذه الميزة حفظ النطاق الترددي للشبكة وتقليل حجم رأس الرسالة، خاصة بالنسبة للمواضيع ذات الأسماء الطويلة. وهو مفيد في السيناريوهات التي يتم فيها نشر نفس الموضوع بشكل متكرر في رسائل متعددة، كما هو الحال في شبكات الاستشعار. يدعم وسيط MQTT ما يصل إلى 10 أسماء مستعارة للموضوع. يمكن للعميل استخدام حقل Topic Alias في حزمة PUBLISH لاستبدال اسم الموضوع الكامل بالاسم المستعار المقابل.
التحكم بالتدفق
في MQTT v5، يشير التحكم في التدفق إلى آلية إدارة معدل وحجم الرسائل التي يمكن للعميل التعامل معها. لتكوين التحكم في التدفق، قم بتعيين المعلمات Maximum Packet Size و Receive Maximum في حزمة CONNECT. تسمح المعلمة Receive Maximum للعميل بتحديد عدد الرسائل التي يرسلها الوسيط إلى عدد الرسائل التي يمكن للعميل التعامل معها. تحدد المعلمة Maximum Packet Size الحد الأقصى لحجم الحزم التي يمكن للعميل تلقيها. يبلغ حد حجم الرسالة لوسيط MQTT 512 كيلوبايت. تضمن هذه الميزة موثوقية واستقرار الاتصال للأجهزة المقيدة ذات سرعة المعالجة المحدودة أو قدرات التخزين.
الإقرارات السالبة وحزمة قطع الاتصال التي بدأها الخادم
بالنسبة إلى MQTT v5، يمكن لوسيط MQTT إرسال إقرارات سلبية وحزم قطع الاتصال التي بدأها الخادم والتي تزود العميل بمزيد من المعلومات حول حالات فشل تسليم الرسائل أو الاتصال. تساعد هذه الميزات العميل على تشخيص السبب وراء الفشل واتخاذ إجراءات التخفيف المناسبة. يستخدم وسيط MQTT رموز السبب المحددة في مواصفات MQTT v5.
ترتيب الرسائل
يضمن MQTT v5 تسليم الرسائل بالترتيب داخل كل موضوع وكل عميل عند استخدام مستوى جودة الخدمة 1 ، وهو أمر بالغ الأهمية لسير العمل الذي يتطلب تكامل التسلسل. وهو مثالي لسيناريوهات مثل بيانات تتبع الاستخدام وتنفيذ الأوامر وبيانات السلسلة الزمنية.
ومع ذلك، فإنه لا يضمن الترتيب عبر مواضيع مختلفة أو عند إرسال الرسائل بمستويات QoS مختلفة. لمعرفة المزيد ، اتصل بنا على askmqtt@microsoft.com.
معرفات العملاء المعينة
يقدم MQTT v5 دعما لمعرفات العميل المعينة ، مما يسمح لوسيط MQTT بإنشاء معرف عميل فريد وإعادته عندما لا يقدم العميل معرفا. يضمن دعم وسيط MQTT لهذه الميزة إعداد العملاء بسلاسة ويقلل من حاجة العملاء لإدارة معرفاتهم الخاصة. وهو مفيد بشكل خاص في السيناريوهات التي يكون فيها توفير العميل ديناميكيا أو عندما لا يكون للأجهزة هوية مكونة مسبقا. يمكن استرداد معرفات العميل المعينة من استجابة CONNACK وإعادة استخدامها للجلسات المستقبلية للحفاظ على تحديد ثابت.
إدارة معرف العميل وحدود الجلسة في MQTT
- تسمح معرفات العميل المعينة للعملاء بالاتصال دون تحديد معرفات محددة مسبقا، ما يتيح جلسات عمل مؤقتة أو مستمرة.
- يمكن للعملاء تجنب تأمينهم باستخدام فواصل زمنية قصيرة لانتهاء صلاحية الجلسة أثناء الاتصال الأول وحفظ معرف العميل المعين للاستخدام في المستقبل.
- بالنسبة لتحديثات البرامج الثابتة أو عمليات إعادة التعيين، يجب على العملاء إما الاحتفاظ بمعرف العميل المعروف أو استخدام فواصل زمنية متواضعة لانتهاء صلاحية الجلسة لتجنب عمليات التأمين المطولة.
- يمكن أن يزيد تكوين مساحة الاسم من حدود الجلسة لكل عميل لتقليل الاضطرابات أثناء التحديثات أو التراجع.
القيود الحالية
يضيف وسيط MQTT المزيد من ميزات MQTT v5 و MQTT v3.1.1 في المستقبل لتتماشى بشكل أكبر مع مواصفات MQTT. توضح القائمة التالية بالتفصيل الاختلافات الحالية بين الميزات التي يدعمها وسيط MQTT ومواصفات MQTT.
القيود الحالية ل MQTT v5
يختلف MQTT v5 حاليا عن مواصفات MQTT v5 بالطرق التالية:
- الاشتراكات المشتركة غير مدعومة حتى الآن.
- الحد الأقصى لفاصل تأخير الإرادة هو 300.
- الحد الأقصى ل QoS هو 1.
- الحد الأقصى لحجم العبوة هو 512 كيلوبايت.
- معرفات الاشتراك غير متوافقة.
- الحد الأقصى للاسم المستعار للموضوع هو 10. لا يعين الخادم أي أسماء مستعارة للموضوع للرسائل الصادرة في الوقت الحالي. يمكن للعملاء تعيين الأسماء المستعارة للموضوع واستخدامها ضمن الحد المحدد.
- لا يقوم CONNACK بإرجاع
Response Informationالخاصية حتى إذا كان طلب CONNECT يحتوي على الخاصيةRequest Response Information. - لا تستخدم الخدمة خصائص المستخدم على حزم CONNECT وSUBSCRIBE وDISCONNECT وPUNBACK وAUTH، لذا فهي غير مدعومة. إذا تضمن أي من هذه الطلبات خصائص المستخدم، يفشل الطلب.
- إذا تلقى الخادم حزمة PUBACK من عميل يحتوي على رمز استجابة عدم نجاح، إنهاء الاتصال.
- الحد الأقصى للاحتفاظ بالحياة هو 1,160 ثانية.
القيود الحالية ل MQTTv3.1.1
يختلف MQTT v5 حاليا عن مواصفات MQTT v3.1.1 بالطرق التالية:
- جودة الخدمة 2 غير مدعومة. يفشل طلب النشر الذي يحتوي على
RETAINعلامة أو مع جودة الخدمة 2 ويغلق الاتصال. - الحد الأقصى للاحتفاظ بالحياة هو 1,160 ثانية.
نماذج التعليمات البرمجية
يحتوي هذا المستودع على نماذج التعليمات البرمجية C# وC وPython التي توضح كيفية إرسال بيانات تتبع الاستخدام وإرسال الأوامر وتنبيهات البث. الشهادات التي تم إنشاؤها من خلال العينات مناسبة للاختبار، ولكنها غير مناسبة لبيئات الإنتاج.
المحتوى ذو الصلة
لمعرفة المزيد حول MQTT، راجع مواصفات MQTT v5. لمعرفة المزيد عن وسيط MQTT ، راجع: