JMS と AMQP - RabbitMQ 質問する

JMS と AMQP - RabbitMQ 質問する

私は JMS とは何か、そしてそれが AMQP の用語とどのように関連しているかを理解しようとしています。JMS は API であり、AMQP はプロトコルであることは知っています。

私の仮定(そして疑問も)は次のとおりです。

  • RabbitMQ は AMQP プロトコルを使用します (AMQP プロトコルを実装します)
  • Javaクライアントは、RabbitMQに接続/使用するためにAMQPプロトコルクライアントライブラリを使用する必要があります。
  • ここで JMS API はどこで役立ちますか? JMS API は、RabbitMQ に接続するために AMQP クライアント ライブラリを使用する必要がありますか?
  • 通常、RabbitMQ、ActiveMQ などのメッセージ ブローカーを接続するには JMS を使用します。では、ここで AMQP の代わりに使用されるデフォルトのプロトコルは何でしょうか?

上記のいくつかは愚かなことかもしれません。:-) しかし、それを理解しようとしています。

ベストアンサー1

質問が少し複雑ですが、一つずつ見ていきましょう。

一般的な概念:

Java メッセージ サービス(JMS) APIは、2つ以上のクライアント間でメッセージを送信するためのJava Message Oriented Middleware (MOM) APIです。JMS は Java Platform, Enterprise Edition の一部であり、Java Community Process の下で JSR 914 として開発された仕様によって定義されています。これは、Java Enterprise Edition (Java EE) に基づくアプリケーション コンポーネントがメッセージを作成、送信、受信、および読み取りできるようにするメッセージング標準です。分散アプリケーションのさまざまなコンポーネント間の通信を疎結合、信頼性、非同期にすることができます。

(からウィキペディア):

高度なメッセージ キュー プロトコル (AMQP)は、メッセージ指向ミドルウェア用のオープン スタンダード アプリケーション層プロトコルです。AMQP の特徴は、メッセージ指向、キューイング、ルーティング (ポイントツーポイントおよびパブリッシュ アンド サブスクライブを含む)、信頼性、およびセキュリティです。

そして最も重要なことは(これもWikipediaから引用):

API を定義するだけの JMS とは異なり、AMQP はワイヤ レベルのプロトコルです。ワイヤ レベルのプロトコルは、ネットワークを介してオクテットのストリームとして送信されるデータの形式を記述したものです。したがって、このデータ形式に準拠したメッセージを作成および解釈できるツールであれば、実装言語に関係なく、他の準拠ツールと相互運用できます。

知っておくべき重要な事項:

  1. AMQP は JMS API を実装しないメッセージング テクノロジであることに注意してください。
  2. JMS は API であり、AMQP はプロトコルです。したがって、JMS のデフォルト プロトコルが何であるかを言うのは意味がありません。もちろん、クライアント アプリケーションは、WebLogic Web サービスを呼び出すときに、接続プロトコルとして HTTP/S を使用します。
  3. JMS は API 仕様に過ぎません。プロトコルは使用しません。JMS プロバイダー (ActiveMQ など) は、JMS API を実現するために、基盤となるプロトコルを使用できます。たとえば、Apache ActiveMQ は、AMQP、MQTT、OpenWire、REST (HTTP)、RSS および Atom、Stomp、WSIF、WS Notification、XMPP のいずれかのプロトコルを使用できます。次の内容を読むことをお勧めします。接続プロトコルとして JMS トランスポートを使用する

幸運を :)

おすすめ記事