معرفی بروکر Emitter و نحوه راه‌اندازی آن

در مقاله قبلی درباره پروتکل MQTT صحبت کردیم، در این مقاله ‌می‌خواهیم به بررسی بروکر Emitter ، نحوه راه‌اندازی آن و کار با آن بپردازیم.


امیتر یک پلتفرم ارسال/دریافت (publish-subscribe) مقیاس‌پذیر، مقاوم در برابر خطاست که از طریق پروتکل MQTT جهت انتقال و ذخیره سازی امن پیام استفاده می‌شود.این پروژه متن باز بوده و به زبان برنامه نوسی Go توشته شده است.

  • Publish/Subscribe using MQTT over TCP or Websockets.
  • Resilient, highly available and partition tolerant (AP in CAP terms).
  • Able to handle 3+ million of messages/sec on a single broker.
  • Supports message storage with history and message-level expiry.
  • Provides secure channel keys with permissions and can face the internet.
  • Automatic TLS/SSL and encrypted inter-broker communication.
  • Built-in monitoring with Prometheus, StatsD and more.
  • Shared subscriptions, links and private links for channels.
  • Easy deployment with Docker and Kubernetes of production-ready clusters.

امیتر برای سیستم عامل‌های لینوکس، مک و ویندوز در دسترس می‌باشد، می‌توان آن‌را بر روی بردهای امبدد با پردازنده آرم مانند رزبری پای پیاده‌سازی کرد و همچنین می‌توان آن‌را بر روی داکر توسط دستور زیر اجرا نمود:

docker run -d --name emitter -p 8080:8080 --restart=unless-stopped emitter/server

با اجرای امیتر برای اولین بار اطلاعات زیر در ترمینال نمایش داده می‌شود:

[service] unable to find a license, make sure 'license' value is set in the config file or EMITTER_LICENSE environment variable
[service] generated new license: uppD0PFIcNK6VY-7PTo7uWH8EobaOGgRAAAAAAAAAAI
[service] generated new secret key: JUoOxjoXLc4muSxXynOpTc60nWtwUI3o

به مقادیر license و secret key برای کار با امیتر نیاز داریم پس این اطلاعات را ذخیره کنید.پس اجرای امیتر یک فایل متنی با نام emitter.conf در کنار فایل اجرایی امیتر ایجاد شده که دارای مقادیر زیر می‌باشد:

emitter.conf:
{
	&quotlisten&quot: &quot:8080&quot,
	&quotlicense&quot: &quot&quot,
	&quotlimit&quot: {},
	&quottls&quot: {
		&quotlisten&quot: &quot:443&quot,
		&quothost&quot: &quot&quot
	},
	&quotcluster&quot: {
		&quotlisten&quot: &quot:4000&quot,
		&quotadvertise&quot: &quotexternal:4000&quot
	},
	&quotstorage&quot: {
		&quotprovider&quot: &quotinmemory&quot
	}
}

مقدار listen را به ۱۸۸۳ تغییر دهید و در قسمت license مقدار ذخیره شده در مرحله قبل را کپی کرده و پس از ذخیره فایل امیتر را دوباره اجرا کنید.

در این مرحله امیتر اجرا شده و ارسال و دریافت پیام را بررسی کنیم. برای این منظور نیاز به یک کلاینت MQTT داریم که از MQTT Explorer استفاده می‌کنیم که می‌توانید آن را برای سیستم‌عامل‌های مک،ویندوز و لینوکس دانلود کنید.

برای ساخت Channel جدید برای ارسال و دریافت پیام ادرس http://localhost:1883/keygen را در مرورگر خود باز کنید.مقدار secret key را که در مراحل قبل ذخیره کرده بودید را وارد کنید و برای ساخت کانال یک یک نام در قسمت Target Channel وارد کنید. نام هر کانال حتما باید با اسلش (/) تمام شود.در پایان تیک گزینه Allow write (publish) to the channel را زده و بر روی Generate Key کلیک کنید.

با channel name و channel key بدست امده به شکل زیر می‌تواند به صورت زیر پیام ارسال و دریافت کنید.

channel_key/channel_name/

U7mh-tL0Bh26gKyh0_7yEvJWuGexrOpJ/test/

حال MQTT Explorer را باز کرده و مقادیر خواسته شده را وارد می‌کنیم.


در قسمت advanced مقدار channel_key/channel_name/ را برای Subscribe وارد می‌کنیم.

با برگشت به صفحه قبل و ذخیره اطلاعات می‌توانید با سرور MQTT متصل شوید.

با Publish داده بر روی کانال تعریف شده می‌توانید همان پیام را در قسمت Subscribe دریافت کنید.

در مقاله بعدی می‌خواهیم ارسال و دریافت داده با پروتکل MQTT را توسط ESP32 را بررسی کنیم.