پرش به محتوا

ربیت ام کیو

از ویکی‌پدیا، دانشنامهٔ آزاد
ربیت ام کیو
توسعه‌دهنده(ها)Pivotal Software
انتشار پایدار
3.7.4 / ۸ مارس ۲۰۱۸؛ ۶ سال پیش (۲۰۱۸-08}})
مخزنgithub.com/rabbitmq
نوشته‌شده باارلنگ
سیستم‌عاملچند سکویی
نوعپرتکل صف بندی پیام پیشرفته, میان افزار پیام محور
مجوزپروانه همگانی موزیلا
وبگاه

ربیت ام کیو (انگلیسی: RabbitMQ) یک نرم‌افزار کارگزار پیام منبع باز (گاهی اوقات میان‌افزار پیام‌محور خوانده می‌شود) است که در اصل پروتکل صف بندی پیام پیشرفته (انگلیسی: Advanced Message Queuing Protocol) یا AMQP را پیاده‌سازی کرده‌است اما پس از آن اقدام به گسترش پروتکل‌های پشتیبانی شده خود با معماری افزونه ای (انگلیسی: plug-in protocol) برای پروتکل پیام جریان-متن محور (انگلیسی: Streaming Text Oriented Messaging Protocol) یا STOMP، پروتکل MQTT و سایر پروتکل‌ها نموده است.[۱] سرور ربیت ام کیو به زبان ارلنگ نوشته شده‌است و روی بستر چارچوب Open Telecom Platform ساخته شده‌است. کتابخانه‌های سمت کلاینت که واسطی برای ارتباط با کارگزار فراهم می‌کنند برای زبان‌های برنامه‌نویسی مشهور وجود دارد.

تاریخچه

[ویرایش]

در ابتدا شرکت Rabbit Technologies Ltd اقدام به توسعه ربیت ام کیو نمود که در سال 2010 توسط شرکت SpringSource که بخشی از VMware است خریداری شد.[۲] [۳]

کد منبع تحت پروانه پروانه همگانی موزیلا منتشر شد. پروژه شامل موارد زیر می‌شود:

  • سرور تبادل (انگلیسی: RabbitMQ) ربیت ام کیو
  • دروازه‌های ارتباطی (انگلیسی: gateway) برای پروتکل‌های AMQP، HTTP، STOMP و MQTT
  • کتابخانه‌های سمت کلاینت AMQP برای جاوا، .NET Framework و Erlang. (کلاینت‌های AMQP برای سایر زبان‌ها هم توسط سایر فروشندگان در دسترس است)
  • یک پلتفرم افزونه پذیر (انگلیسی: plug-in platform) برای اضافه کردن موارد سفارشی شده که شامل مجمموعه افزونه‌های از پیش تعریف شده زیر است:
    • افزونه Shovel که مسئول انتقال یا کپی کردن پیام‌ها از یک کارگزار به کارگزار دیگر است.
    • افزونه Federation که امکان به اشتراک گذاری بهینه پیام‌ها بین کارگزاران (در سطح تبادل) را فراهم می‌کند.
    • افزونه Management که پایش و کنترل کارگزارها و خوشه‌هایی از کارگزاران را ممکن می‌کند.

مثال ها

[ویرایش]

این بخش شامل مثال‌هایی برای ارسال/ دریافت و ارسال پیام‌ها به/از یک صف به زبان پایتون است:

ارسال

[ویرایش]

قطعه کد زیر ابتدا ارتباط برقرار کرده، از وجود صف اطمینان حاصل می  کند، پیام را می فرستد و در نهایت ارتباط را قطع می‌کند.

#!/usr/bin/env python
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
channel = connection.channel()
channel.queue_declare(queue='hello')
channel.basic_publish(exchange='', routing_key='hello', body='Hello World!')
print(" [x] Sent 'Hello World!'")
connection.close()

دریافت

[ویرایش]

به‌طور مشابه، برنامه زیر یک پیام را از صف دریافت کرده و در خروجی چاپ می‌کند:

#!/usr/bin/env python
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
channel = connection.channel()
channel.queue_declare(queue='hello')
print(' [*] Waiting for messages. To exit press CTRL+C')
def callback(ch, method, properties, body):
    print(" [x] Received %r" % body)
channel.basic_consume(callback, queue='hello', no_ack=True)
channel.start_consuming()

منابع

[ویرایش]
  1. «Which protocols does RabbitMQ support?». بایگانی‌شده از اصلی در ۱۵ مه ۲۰۱۸. دریافت‌شده در ۱۸ مه ۲۰۱۸.
  2. "Rabbit Technologies announce acquisition by SpringSource". Press release. April 13, 2010. Archived from the original on April 18, 2010. Retrieved October 3, 2013.
  3. "Proudly part of Pivotal". Press release. May 14, 2010. Archived from the original on June 2, 2013. Retrieved October 3, 2013.

مطالعه بیشتر

[ویرایش]

پیوند به بیرون

[ویرایش]