Farchid
Farchid
خواندن ۲ دقیقه·۲ سال پیش

یه Hello world با استفاده از RabbitMQ و گولنگ

سورس اصلی مقاله :)

ربیت ام کیو یک 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

پابلیشر یا ارسال کننده به ربیت ام کیو وصل خواهد شد و یک پیام ارسال میکنم و تموم میشه کارش

https://gist.github.com/farshidboroomand/e691314b6e0068072bb45fc4ce28ebd5


پروسه دریافت پیام

خوب این خانم دریافت کننده مسیج کارش اینه که listen میکنه برای مسیج های دریافتی و اونو پرینت میکنه

ما یه فایل receive.go هم خواهیم داشت

https://gist.github.com/farshidboroomand/73be44807a9e973b98b7a786c95ee95b


خوب حالا توی دو ترمینال جداگانه اول فایل receive.go اجرا کنین و بعدش توی اون یکی فایل send.go و میبینین که داره ارتباط برقرار میشه

در ضمن اینم کامپوز فایلش شاید به کارتون اومد :)

https://gist.github.com/farshidboroomand/6dc1b19107d0d8bbafbc8eb040dc42e3


rabbitmqgolangگولنگ
un homme normal :)
شاید از این پست‌ها خوشتان بیاید