در قسمت قبلی درمورد اینکه MQTT چطور کار می کند صحبت کردیم و در این قسمت با topic ها در MQTT آشنا خواهیم شد و همچنین در قسمت بعدی با فرآیند انتشار و سابسکرایب در MQTT آشنا خواهیم شد و در آخر یک مثال عملی برای استفاده از بروکر Mosquitto و پیاده سازی کلاینت ها برای ارسال و دریافت پیام خواهیم داشت.
تاپیک ها در MQTT یک فرم آدرس دهی هستند که اجازه اشتراک اطلاعات را به کلاینت ها می دهد.
ساختار تاپیک ها مثل ساختار آدرس دهی فولدرها بصورت سلسه مراتبی با استفاده از اسلش(/) هست. با استفاده از این سیستم می توانید ساختارهای نامگذاری کاربر پسندی داشته باشید.
اسامی تاپیک:
به جز SYS topic$ هیچ تاپیکی با ساختار استاندارد و بصورت پیش فرض وجود ندارد و تنها تاپیکی هست که توسط بروکر ایجاد شده است.
بقیه تاپیک ها توسط کلاینت های انتشار دهنده و گیرنده پیام ها ایجاد می شوند و دایمی نیستند. یک تاپیک زمانی وجود دارد که یک کلاینت در آن سابسکرایب کند و یا بروکر دارای مقدار retained باشد و یا last will messages برای تاپیک ذخیره شده باشد.
یک تاپیک رزرو شده است که اغلب بروکرها برای انتشار اطلاعات بروکرها استفاده می کنند. نمونه ای از تاپیک SYS$ در تصویر زیر مشاهده می کنید.
یک کلاینت می تواند در یک یا چندین تاپیک سابسکرایب کند. وقتی سابسکرایب در جندین تاپیک صورت گیرد دو علامت می تواند استفاده شود
1) #/ کاراکتر هش/ برای چندین کاراکتر
2) +/ کاراکتر پلاس/ برای یک کاراکتر
Wildcards برای نمایش یک یا چندین سطح بکار می رود مانند #/house/و نمی تواند به عنوان بخشی از یک نام باشد مثل #hou
سابسکرایب روی تاپیک #/house موارد زیر را ساپورت می کند
سابسکرایب روی house/+/main-light
ولی موارد زیر را ساپورت نمی کند
یک کلاینت فقط روی یک تاپیک می تواند پابلیش کند و از Wildcards ها نمی تواند استفاده کند. یعنی اگر یک کلاینت بخواهد روی دو تاپیک پابلیش انجام دهد باید دوبار یک پیام را ارسال کند.
اگر یک کلاینت روی یک تاپیک سابسکرایب انجام دهد
کلاینتی یک پیام را روی یک تاپیک پابلیش کند و مقدار retained را برابر TRUE قرار دهد.
وقتی که آخرین کلاینتی که روی تاپیک سابسکرایب کرده ارتباطش با بروکر قطع شود یا وقتی کلاینتی با مقدار TRUE برای clean session تنظیم شود.
منبع: http://www.steves-internet-guide.com/