ربیت ام کیو یک Message Broker یا به عبارتی یک رابط هستش برای پیام ها هستش، پیام هارو دریافت و ارسال میکنه، دقیقا میتونین مثل یک اداره پست بهش نگاه کنین، وقتی قصد اینو دارین که یک بسته یا نامه ارسال کنین، خیالتون راحته که بعد از یک زمانی بسته شما به نوبت ارسال خواهد شد حالا این آقای ربیت ام کیو دقیقا شده همین اداره پست یا باکس پستی و نامه ارسالی شما.
تفاوت بین این ابزار با اداره پست اینه که بجای کاغذ داره دیتای باینری این وسط جابجا میکنه !
حالا یه سری اصطلاحات هستش که این دوستمون داره ازش استفاده میکنه که قطعا شما هم میدونین
Producer
Producing means nothing more than sending. A program that sends messages is a producer
Queue
A queue is the name for a post box which lives inside RabbitMQ. Although messages flow through RabbitMQ and your applications, they can only be stored inside a queue. Many producers can send messages that go to one queue, and many consumers can try to receive data from one queue. This is how we represent a queue:
صف یا کیو دقیقا همون باکس پستی هستش که برای این ابزار درنظر گرفته شده، اگرچه مسیج ها میتونن در ربی ام کیو در جریان باشن، اونا فقط میتونن توی یک صف قرار بگیرن.
ایجاد کننده های مسیج ها یا همون producers میتونن به یک صف مسیج هاشونو ارسال کنن و مصرف کننده ها یا دریافت کننده ها (consumers) هم میتونن تلاش کنن برای دریافت دیتا از یک صف
Consumer
Consuming has a similar meaning to receiving. A consumer is a program that mostly waits to receive messages:
مصرف کننده یا دریافت کننده هم برنامه ای هستش که برای دریافت پیام ها داره صبر میکنه که دریافتشون کنه
خوب حالا ما با استفاده از کلاینت گولنگ برای این ابزار یه برنامه خیلی خیلی خیلی احمقانه و ساده مینویسیم ببینیم چطوری این دوستمون کار میکنه :)
دو بخش خواهیم داشت
۱- بخشی که نقش ارسال کننده پیام داره یعنی همون آقای producer
۲ بخشی که نقش دریافت کننده پیام داره یعنی همون خانم consumer
خوب همونطوری که توی دیاگرام مشخصه p همون producer هستش و c هم همون consumer و باکس وسطی هم که صف یا همون Queue هستش
ربیت ام کیو با پروتکل های مختلفی میتونه ارتباط برقرار کنه، همونطوری که توی مقاله اومده ما از AMQP 0-9-1 قراره استفاده کنیم
ما از این کلاینت داریم استفاده میکنیم
go get github.com/rabbitmq/amqp091-go
خوب حالا این کلاینت داریم و بریم بنویسیم ببینیم چی میشه
پروسه ارسال پیام
ما یک فایل send.go خواهیم داشت و یک فایل دریافت مسیج به اسم receive.go
پابلیشر یا ارسال کننده به ربیت ام کیو وصل خواهد شد و یک پیام ارسال میکنم و تموم میشه کارش
پروسه دریافت پیام
خوب این خانم دریافت کننده مسیج کارش اینه که listen میکنه برای مسیج های دریافتی و اونو پرینت میکنه
ما یه فایل receive.go هم خواهیم داشت
خوب حالا توی دو ترمینال جداگانه اول فایل receive.go اجرا کنین و بعدش توی اون یکی فایل send.go و میبینین که داره ارتباط برقرار میشه
در ضمن اینم کامپوز فایلش شاید به کارتون اومد :)