در RabbitMQ، ارسال و دریافت پیامها اساس ارتباط بین سیستمها و سرویسها را تشکیل میدهد. این فرآیند شامل تولید پیام توسط Producer، هدایت آن توسط Exchange، ذخیرهسازی در Queue و دریافت توسط Consumer است.
ارسال پیامها (Producer)
برای ارسال پیام، ابتدا باید به RabbitMQ متصل شویم، صف یا Exchange مناسب را مشخص کنیم و سپس پیام را ارسال کنیم. نمونه کد Python با استفاده از pika:
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
# ایجاد صف
channel.queue_declare(queue='task_queue')
# ارسال پیام
channel.basic_publish(exchange='',
routing_key='task_queue',
body='پیام نمونه')
print("پیام ارسال شد")
connection.close()
دریافت پیامها (Consumer)
Consumer پیامها را از صف دریافت و پردازش میکند. نمونه کد Python:
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
# اطمینان از وجود صف
channel.queue_declare(queue='task_queue')
# تعریف تابع callback برای پردازش پیامها
def callback(ch, method, properties, body):
print(f"پیام دریافت شد: {body.decode()}")
# ثبت Consumer
channel.basic_consume(queue='task_queue',
on_message_callback=callback,
auto_ack=True)
print('در انتظار پیامها...')
channel.start_consuming()
نکات مهم
- استفاده از auto_ack=True باعث میشود پیام پس از دریافت به طور خودکار تأیید شود، اما برای سیستمهای حساس بهتر است از تایید دستی استفاده شود.
- پیامها میتوانند شامل متن، JSON یا دادههای باینری باشند.
- ارسال و دریافت پیامها میتواند به صورت همزمان با چندین Producer و Consumer انجام شود.
جمعبندی
ارسال و دریافت پیامها در RabbitMQ ساده و انعطافپذیر است. با ترکیب Producer، Consumer، Queue و Exchange میتوان سیستمهای پیامرسانی قابل اعتماد و مقیاسپذیر ایجاد کرد که در پروژههای توزیعشده کاربرد گستردهای دارند.