現在、メッセージングのニーズにActiveMQを使用しています。いくつかのdbの障害は別として、うまくいきました。ただし、少なくともRabbitMQを試すことを検討しています。しかし、その前に、次のことを理解したいと思います。
JmsTemplate
に配線し、DefaultMessageListener
Beanを使用してキューをそれぞれのハンドラーに接続します。 RabbitMQでも基本的に同じことができますか?AMQPは、メッセージ指向ミドルウェア(MOM)のアプリケーションレベルの標準です。 JMSは、MOMと通信するためのJavaの標準APIです。
2つの異なるJava JMSを使用するアプリケーションは異なるMOMを使用しているため、通信できません。ActiveMQは、Javaプログラムを許可するJMSライブラリを備えたMOMシステムJMSを使用してアクセスしますが、必ずしもWebLogic MOMなどを使用して別のJMS Javaプログラムと通信できるわけではありません。
AMQPは、たとえばSMTPと同じラインに沿った標準であるため、異なるAMQP MOMシステムは互いに相互運用できます(同じバージョンのAMQPを使用している場合)。 AMQP MOMシステムがそのJavaクライアントにJMSライブラリを提供できなかった理由はありません。たとえば、SwiftMQはJMS APIを提供し、AMQP 1.0を使用します。
残念ながら、すべてのAMQPシステム(および多数あります)がAMQPのバージョン1.0をまだ使用しているわけではありません。 RabbitMQ(この記事の執筆時点)は、AMQP 1.0サポートをまだ提供していません。他のAMQPシステムにはApache QPIDとStormMQがありますが、他にもたくさんあります。これらのすべてがAMQP 1.0をサポートしたら、それらはすべて相互運用可能になります。
ActiveMQのサイトで http://activemq.Apache.org/amqp.html で、ActiveMQは次のように述べています。 AMQPを実装していません。」 AMQP 1.0がリリースされたので、ActiveMQからそれをサポートする時期についてのこれ以上のWordはありません。
RabbitMQはAMQPブローカーであり、構成の大部分はAMQP自体を介して処理されるため、質問のほとんどは意味がありません。
RabbitMQの厄介な問題の1つは、多くのOSパッケージが1.72であり、これが非常に古いことです。 RabbitMQ 2.51の.debまたは.rpmパッケージをサイトから直接入手する方がはるかに良いでしょう。その後、AMQP以外で本当に必要な設定は、rabbitmqctlを使用して仮想ホストとユーザー権限を作成することだけです。または、RabbitMQを再起動する前に、Web管理コンソールの.ezプラグインをダウンロードして正しいディレクトリに配置することもできます。 2.51を使用している場合はこのWeb管理コンソールを強くお勧めしますが、DebianとUbuntuがサドルを使用しているデフォルトの1.72に固執している場合は不可能です。
RabbitMQを実行したら、任意の言語とAMQPライブラリを使用できます。私は個人的にpika、amqplib、kombuを使用するPythonシステムを引き継ぎました。現在、SighaのhaighaとJava AMQP(そしてもちろんMQブローカー)を介してお互いに。
JMS/AMQPの概念を比較してActiveMQとRabbitMQを比較することは最も重要ではありません。ActiveMQはAMQPを話し、商用版にはRabbitMQ用のJMSクライアントがあります(vFabric RabbitMQと呼ばれていました)。しかし、いくつかのユースケースでは、AMQPの概念(ルーティングキー)が役立つ場合があります。
私は両方を使用し、両方が好きです: