ربیت ام کیو
توسعهدهنده(ها) | Pivotal Software |
---|---|
انتشار پایدار | 3.7.4
/ ۸ مارس ۲۰۱۸ |
مخزن | github |
نوشتهشده با | ارلنگ |
سیستمعامل | چند سکویی |
نوع | پرتکل صف بندی پیام پیشرفته, میان افزار پیام محور |
مجوز | پروانه همگانی موزیلا |
وبگاه |
ربیت ام کیو (انگلیسی: 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()
منابع
[ویرایش]- ↑ «Which protocols does RabbitMQ support?». بایگانیشده از اصلی در ۱۵ مه ۲۰۱۸. دریافتشده در ۱۸ مه ۲۰۱۸.
- ↑ "Rabbit Technologies announce acquisition by SpringSource". Press release. April 13, 2010. Archived from the original on April 18, 2010. Retrieved October 3, 2013.
- ↑ "Proudly part of Pivotal". Press release. May 14, 2010. Archived from the original on June 2, 2013. Retrieved October 3, 2013.
مطالعه بیشتر
[ویرایش]- Joern Barthel (2009-09-13). "Getting started with AMQP and RabbitMQ". InfoQ.
- Peter Cooper (2009-04-09). "RabbitMQ - A Fast, Reliable Queuing Option for Rubyists". RubyInside.