RabbitMQはオープンソースのメッセージブローカーソフトウェア(メッセージ指向ミドルウェアと呼ばれることもある)で、元々はAdvanced Message Queuing Protocol (AMQP)を実装していましたが、その後プラグインアーキテクチャによって拡張され、 Streaming Text Oriented Messaging Protocol(STOMP)、MQ Telemetry Transport (MQTT)、その他のプロトコルをサポートするようになりました。[ 2 ]
Erlangで記述されたRabbitMQサーバーは、クラスタリングとフェイルオーバーのためにOpen Telecom Platformフレームワーク上に構築されています。ブローカーと連携するためのクライアントライブラリは、主要なプログラミング言語すべてに対応しています。ソースコードはMozilla Public Licenseの下で公開されています。
2020年11月以降、サポートとエンタープライズ機能のために、RabbitMQの商用製品が提供されています。「VMware RabbitMQ OVA」、「VMware RabbitMQ」、「VMware RabbitMQ for Kubernetes」(機能レベルが異なります)[ 3 ]。オープンソースのRabbitMQもBitnamiによってパッケージ化されており[ 4 ] 、 BroadcomのVMware Tanzu Application Service向けに商用で提供されています。
元々は、2007 年に LShift と CohesiveFT の合弁事業として始まった Rabbit Technologies Ltd. によって開発されたRabbitMQ は、2010 年 4 月に VMware の一部門である SpringSource に買収されました。[6 ]このプロジェクトは、 2013年5月にPivotal Softwareの一部となり、[ 7 ]その後 2019 年 12 月に VMware に買収されました。[ 8 ]
このプロジェクトは以下で構成されています。
このセクションでは、キューを使用してメッセージを送受信するための、Python(pikaパッケージを使用)で書かれたサンプルプログラムを紹介します。
以下のコード断片は、接続を確立し、受信キューが存在することを確認し、メッセージを送信し、最後に接続を閉じます。
#!/usr/bin/env python3 import pikaconnection = 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 python3 import pikadef callback ( ch , method , properties , body ): print ( " [x] 受信%r " % body )connection = pika.BlockingConnection ( pika.ConnectionParameters ( host = "localhost" )) channel = connection.channel ( ) channel.queue_declare ( queue = " hello" ) print ( "[ * ]メッセージを待機しています。終了するにはCtrl+Cを押してください" ) channel.basic_consume ( queue = " hello " , on_message_callback = callback ) channel.start_consuming ( )