مباحث MQTT ، کارتهای وحشی ، و بهترین روشها - ملزومات MQTT: قسمت 5

ساخت وبلاگ

آخرین مطالب

امکانات وب

به بخش پنجم ملزومات MQTT خوش آمدید. یک سری وبلاگ ده قسمتی در مورد ویژگی ها و مفاهیم اصلی پروتکل MQTT. در این پست ، ما روی موضوعات MQTT و بهترین شیوه ها تمرکز می کنیم. همانطور که قبلاً نیز اشاره کردیم ، کارگزار MQTT از موضوع پیام استفاده می کند تا تصمیم بگیرد کدام مشتری کدام پیام را دریافت می کند. ما همچنین به Sys-Topics نگاه می کنیم ، که مباحث خاصی هستند که اطلاعات مربوط به خود کارگزار را نشان می دهد. حتماً در پایان این پست وبلاگ ویدیوی ما در مورد مباحث MQTT را تماشا کنید. بیا شروع کنیم.

کتاب الکترونیکی MQTT Essentials را دریافت کنید

72 صفحه آموزش و یادگیری MQTT برای مبتدیان و متخصصان.

مباحث MQTT

در MQTT ، موضوع کلمه به یک رشته UTF-8 اشاره دارد که کارگزار برای فیلتر کردن پیام ها برای هر مشتری متصل استفاده می کند. موضوع شامل یک یا چند سطح موضوع است. هر سطح موضوع با یک برش رو به جلو (جداکننده سطح موضوع) از هم جدا می شود.

topic basics

در مقایسه با صف پیام ، مباحث MQTT بسیار سبک است. مشتری نیازی به ایجاد موضوع مورد نظر قبل از انتشار یا مشترک شدن در آن ندارد. کارگزار هر موضوع معتبر را بدون هیچ گونه اولیه سازی قبلی می پذیرد.

در اینجا چند نمونه از موضوعات آورده شده است:

MyHome/Flandfloor/اتاق نشیمن/دما ایالات متحده/کالیفرنیا/سان فرانسیسکو/دره سیلیکون 5FF4A2CE-E485-40F4-826C-B1A5D81BE9B6/وضعیت آلمان/بایریا/ماشین/2382340923453/Latitude

توجه داشته باشید که هر موضوع باید حداقل 1 کاراکتر داشته باشد و رشته موضوع اجازه می دهد فضاهای خالی باشد. مباحث حساس به مورد هستند. به عنوان مثال ، MyHome/Demon و MyHome/Dement دو موضوع متفاوت است. علاوه بر این ، Slash Forward به تنهایی یک موضوع معتبر است.

کارتهای وحشی MQTT

هنگامی که مشتری در یک موضوع مشترک می شود ، می تواند در موضوع دقیق یک پیام منتشر شده مشترک شود یا می تواند از Wildcards برای عضویت در موضوعات مختلف به طور همزمان استفاده کند. کارت وحشی فقط می تواند برای عضویت در مباحث استفاده شود ، نه برای انتشار پیام. دو نوع وحشی مختلف وجود دارد: تک سطح و چند سطح.

سطح تک: +

همانطور که از نام آن پیداست ، یک کارت وحشی تک سطح جایگزین یک سطح موضوع می شود. نماد به علاوه نمایانگر یک کارت وحشی تک سطح در یک موضوع است.

topic wildcard plus

هر موضوعی اگر به جای کارت وحشی حاوی یک رشته خودسرانه باشد ، با یک کارت وحشی تک سطح مطابقت دارد. به عنوان مثال اشتراک در MyHome/Flandfeloor/+/دما می تواند نتایج زیر را تولید کند:

topic wildcard plus example

چند سطح: #

کارت ویزیت چند سطحی سطح بسیاری از موضوعات را پوشش می دهد. نماد هش نشان دهنده کارت وحشی چند سطحی در موضوع است. برای اینکه کارگزار تعیین کند که مباحث با کدام مباحث مطابقت دارد ، کارت وحشی چند سطحی باید به عنوان آخرین شخصیت در موضوع قرار گیرد و پیش از یک برش رو به جلو باشد.

topic wildcard hash

topic wildcard hash example

هنگامی که مشتری با یک کارت ویزیت چند سطحی در موضوعی مشترک می شود ، تمام پیام های موضوعی را دریافت می کند که با الگوی قبل از شخصیت Wildcard شروع می شود ، مهم نیست که موضوع یا عمق آن چقدر باشد. اگر فقط Wildcard چند سطحی را به عنوان یک موضوع ( #) مشخص کنید ، تمام پیام هایی را که برای کارگزار MQTT ارسال می شود ، دریافت می کنید. اگر انتظار توان بالایی دارید ، اشتراک با کارت وحشی چند سطحی به تنهایی ضد الگوی است (به بهترین روشهای زیر مراجعه کنید).

مباحث MQTT با $ آغاز می شود

به طور کلی ، می توانید موضوعات MQTT خود را همانطور که می خواهید نامگذاری کنید. با این حال ، یک استثنا وجود دارد: مباحثی که با نماد $ شروع می شوند ، هدف متفاوتی دارند. این مباحث بخشی از اشتراک نیست که شما در Wildcard چند سطحی به عنوان یک موضوع (#) مشترک شوید. مباحث $-symbol برای آمار داخلی کارگزار MQTT محفوظ است. مشتریان نمی توانند پیام هایی را برای این مباحث منتشر کنند. در حال حاضر ، هیچ استانداردی رسمی برای چنین موضوعاتی وجود ندارد. معمولاً از $ sys/ برای همه اطلاعات زیر استفاده می شود ، اما اجرای کارگزار متفاوت است. یک پیشنهاد برای $ sys-topics در ویکی MQTT Github است. در اینجا چند نمونه آورده شده است:

$ sys/کارگزار/مشتری/اتصال $ sys/کارگزار/مشتری/جدا شده $ sys/کارگزار/مشتری/کل $ sys/کارگزار/پیام ها/ارسال $ sys/کارگزار/uptime

خلاصه مباحث MQTT

اینها اصول اولیه مباحث پیام MQTT است. همانطور که مشاهده می کنید ، مباحث MQTT پویا است و انعطاف پذیری بسیار خوبی را ارائه می دهد. هنگامی که از کارتهای وحشی در برنامه های دنیای واقعی استفاده می کنید ، چالش هایی وجود دارد که باید از آنها آگاه باشید. ما بهترین شیوه هایی را که از کار گسترده با MQTT در پروژه های مختلف آموخته ایم ، جمع آوری کرده ایم و همیشه برای پیشنهادات یا بحث در مورد این شیوه ها باز هستیم. برای شروع مکالمه از نظرات استفاده کنید ، بهترین شیوه های خود را به ما اطلاع دهید یا اگر با یکی از ما مخالف هستید!

بهترین روشهای MQTT

هرگز از یک برش پیشرو به جلو استفاده نکنید

یک برش پیشرو به جلو در MQTT مجاز است. به عنوان مثال ،/MyHome/زمین زمین/اتاق نشیمن. با این حال ، Slash پیشرو به جلو یک موضوع غیر ضروری با شخصیت صفر در جلو معرفی می کند. صفر هیچ فایده ای ندارد و اغلب منجر به سردرگمی می شود.

هرگز از فضاها در یک موضوع استفاده نکنید

یک فضا دشمن طبیعی هر برنامه نویس است. هنگامی که اوضاع به همان شکلی که لازم است پیش نمی روند ، فضاها خواندن و اشکال زدایی موضوعات را بسیار سخت تر می کند. مانند برش های پیشرو ، فقط به این دلیل که چیزی مجاز است ، به این معنی نیست که باید از آن استفاده شود. UTF-8 انواع مختلفی از فضای سفید دارد ، از چنین شخصیت های غیر معمول باید جلوگیری شود.

موضوع MQTT را کوتاه و مختصر نگه دارید

هر موضوع در هر پیامی که در آن استفاده می شود گنجانده شده است. مباحث خود را تا حد امکان کوتاه و مختصر قرار دهید. وقتی صحبت از دستگاه های کوچک می شود ، هر بایت حساب می شود و طول موضوع تأثیر زیادی دارد.

فقط از کاراکترهای ASCII استفاده کنید ، از شخصیت های غیر قابل چاپ خودداری کنید

از آنجا که کاراکترهای غیر ASCII UTF-8 اغلب به طور نادرست نمایش داده می شوند ، یافتن تایپ یا موضوعات مربوط به مجموعه کاراکتر بسیار دشوار است. مگر اینکه کاملاً ضروری باشد ، توصیه می کنیم از استفاده از شخصیت های غیر ASCII در یک موضوع جلوگیری کنید.

یک شناسه منحصر به فرد یا شناسه مشتری را در موضوع قرار دهید

این می تواند بسیار مفید باشد که شناسه منحصر به فرد مشتری نشر را در این موضوع گنجانده شود. شناسه منحصر به فرد در موضوع به شما کمک می کند تا چه کسی پیام را ارسال کرده باشید. شناسه تعبیه شده می تواند برای اجرای مجوز استفاده شود. فقط مشتری که دارای شناسه مشتری مشابه شناسه در موضوع است ، مجاز به انتشار آن در آن موضوع است. به عنوان مثال ، مشتری با شناسه مشتری 1 مجاز به انتشار به Client1/Status است ، اما مجاز به انتشار به Client2/Status نیست.

مشترک در #

بعضی اوقات ، لازم است در کلیه پیام هایی که از طریق کارگزار منتقل می شوند ، مشترک شوید. به عنوان مثال ، برای ادامه همه پیام ها در یک پایگاه داده. با استفاده از یک مشتری MQTT و مشترک شدن در یک کارت ویزیت چند سطحی ، در تمام پیام های موجود در یک کارگزار مشترک شوید. غالباً ، مشتری مشترک قادر به پردازش بار پیام هایی نیست که از این روش حاصل می شود (به خصوص اگر توان گسترده ای داشته باشید). توصیه ما اجرای یک برنامه افزودنی در کارگزار MQTT است. به عنوان مثال ، با سیستم افزونه HIVEMQ می توانید به رفتار HiveMQ بپردازید و یک روال ناهمزمان برای پردازش هر پیام ورودی اضافه کرده و آن را به یک پایگاه داده ادامه دهید.

قابلیت گسترش را فراموش نکنید

مباحث یک مفهوم انعطاف پذیر است و نیازی به تهیه آنها به هیچ وجه نیست. با این حال ، هم ناشر و هم مشترک باید از موضوع آگاه باشند. مهم است که در مورد چگونگی گسترش مباحث برای امکان ویژگی ها یا محصولات جدید فکر کنید. به عنوان مثال ، اگر راه حل خانه هوشمند شما سنسورهای جدیدی را اضافه می کند ، می توان بدون تغییر کل سلسله مراتب موضوع ، این موارد را به درخت موضوع خود اضافه کرد.

از موضوعات خاص استفاده کنید ، نه موارد کلی

وقتی مباحث را نامگذاری می کنید ، از آنها به همان روشی که در یک صف استفاده نکنید ، استفاده نکنید. تا حد امکان مباحث خود را متمایز کنید. به عنوان مثال ، اگر در اتاق نشیمن خود سه سنسور دارید ، موضوعاتی را برای MyHome/Room Room/Demon ، MyHome/Room/Brightness و MyHome/اتاق نشیمن/رطوبت ایجاد کنید. تمام ارزش ها را از طریق MyHome/اتاق نشیمن ارسال نکنید. استفاده از یک موضوع واحد برای همه پیام ها یک الگوی ضد است. نامگذاری خاص همچنین امکان استفاده از سایر ویژگی های MQTT مانند پیام های حفظ شده را برای شما فراهم می کند. برای اطلاعات بیشتر در مورد پیام های حفظ شده ، به قسمت 8 سری Essentials مراجعه کنید.

این ما را به پایان قسمت پنجم در سری MQTT Essentials ما می رساند. با تشکر از خواندندر پست بعدی ما کیفیت خدمات (QoS) را در MQTT پوشش می دهیم. ما توضیح خواهیم داد که چرا این یک ویژگی اساسی است و چگونه می توانید از آن استفاده کنید.

سؤالات متداول درباره موضوعات MQTT

فرستنده MQTT (ناشر) و گیرنده (مشترک) از طریق مباحث MQTT ارتباط برقرار می کنند. مباحث MQTT رشته های UTF-8 است که به مشتریان MQTT اجازه می دهد تا اطلاعات را به اشتراک بگذارند.

یک موضوع MQTT به عنوان یک رشته UTF-8 با یک یا چند سطح موضوع ایجاد می شود. سطح موضوع توسط یک برش رو به جلو جدا می شود.

نام موضوع MQTT یک رشته ساده UTF-8 است که از نظر سلسله مراتبی با برش های رو به جلو به عنوان تعیین کننده ساخته شده است. به عنوان مثال ، "MyHome/اتاق نشیمن/دما.

آره. شما می توانید از MQTT Wildcards برای عضویت در موضوعات مختلف به طور همزمان استفاده کنید. کارت وحشی فقط می تواند برای عضویت در مباحث استفاده شود ، نه برای انتشار پیام.

هنگامی که مشتری در یک موضوع مشترک می شود ، می تواند در موضوع دقیق یک پیام منتشر شده مشترک باشد یا می تواند از Wildcards MQTT برای عضویت در موضوعات مختلف به طور همزمان استفاده کند. کارت وحشی فقط می تواند برای عضویت در مباحث استفاده شود ، نه برای انتشار پیام. دو نوع وحشی مختلف وجود دارد: تک سطح و چند سطح.

+ نماد نشان دهنده یک کارت وحشی تک سطح در یک موضوع MQTT است و # نماد نشان دهنده کارت وحشی چند سطحی در یک موضوع MQTT است.

اگر می خواهید خبرنامه ما را به محض انتشار مستقیماً به صندوق ورودی خود تحویل دهید ، ایمیل خود را در فرم اشتراک زیر وارد کنید. اگر RSS را ترجیح می دهید ، می توانید در FEED RSS ما در اینجا مشترک شوید.

درباره تیم HiveMQ

ما عاشق نوشتن در مورد MQTT ، پروتکل های IoT و معماری به طور کلی هستیم. کارشناسان ما برای کمک به اینجا هستند ، بنابراین اگر می توانیم کمک کنیم به ما دسترسی پیدا کنید! با ما تماس بگیرید

در HiveMQ به روز باشید

برای به روزرسانی های HiveMQ ، MQTT و IoT در خبرنامه ما مشترک شوید.

با کلیک بر روی دکمه اشتراک ، رضایت خود را برای استفاده از داده های خود مطابق با خط مشی رازداری ما ارائه می دهید. شما می توانید رضایت خود را در هر زمان با اثر آینده پس بگیرید.

مثل این پست؟

اخبار HiveMQ را مستقیماً به صندوق ورودی خود تحویل دهید

با کلیک بر روی دکمه اشتراک ، رضایت خود را به استفاده از داده های خود مطابق با خط مشی رازداری ما می دهید. شما می توانید رضایت خود را در هر زمان با اثر آینده پس بگیرید.

با کلیک بر روی دکمه اشتراک ، رضایت خود را برای استفاده از داده های خود مطابق با خط مشی رازداری ما ارائه می دهید. شما می توانید رضایت خود را در هر زمان با اثر آینده پس بگیرید.

آموزش کار در فارکس...
ما را در سایت آموزش کار در فارکس دنبال می کنید

برچسب : نویسنده : Mihayloo بازدید : <-PostHit-> تاريخ : چهارشنبه 24 اسفند 1401 ساعت: 13:42