150

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

これが私の仮定です(そして質問も)

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

上記のいくつかはばかげているかもしれません。:-) しかし、頭を包み込もうとしています。

4

8 に答える 8

127

あなたの質問は少し乱雑ですが、そのビットを1つずつ見てみましょう.

一般的なコンセプト:

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

ウィキペディアから):

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

そして最も重要なこと (ウィキペディアから):

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 通知、XMPP。Using JMS Transport as the Connection Protocolを読むことをお勧めします。

幸運を :)

于 2013-03-01T04:33:26.940 に答える
49

基礎から始めましょう。

RabbitMQ は MOM (メッセージ指向ミドルウェア) であり、Erlang (TLC 指向のプログラミング言語) で開発され、ワイヤ プロトコル AMQP (Advance Message Queueing Protocol) を実装しています。現在、多くのクライアント API (Java、C++、RESTful など) を使用して、RabbitMQ メッセージング サービスを使用できます。

JMS (Java Messaging Service) は、MOM によって実装される一連の構造化 APIを定義する JCP 標準です。JMS API を実装する (互換性がある) MOM の例は ActiveMQ です。HornetMQ などもあります。このようなミドルウェアは JMS API を取得し、それに応じて交換パターンを実装します。

上記によると、JMS API のスケルトン、RabbitMQ のインスタンス、およびその Java クライアント API を利用すると、RabbitMQ を使用する JMS 実装を開発することができます。その時点で行う必要があるのは、 JMS 仕様に従った交換パターン (RabbitMQ 経由)。

重要なのは、JMS のような一連の API は、テクノロジー(この場合は RabbitMQ) に関係なく実装できるということです。

于 2014-10-16T19:10:25.377 に答える
16

JMSが定義されたとき、JMSクライアントとメッセージングサーバー間のプロトコルは定義されていませんでした。JMS APIを実装するJMSクライアントは、メッセージングサーバーと通信するために任意のプロトコルを使用できます。クライアントは、JMSAPIに準拠している必要があります。それで全部です。通常、JMSクライアントは、メッセージングサーバーが理解するカスタムプロトコルを使用します。

一方、AMQPは、メッセージングクライアントとメッセージングサーバー間のプロトコルです。JMSクライアントは、メッセージングサーバーと通信するためのプロトコルとしてAMQPを使用できます。そして、そのようなクライアントが利用可能です。

http://www.lshift.net/blog/2009/03/16/openamqs-jms-client-with-rabbitmq-server

于 2013-03-01T05:48:19.807 に答える
-1

このドキュメントを探しているのではないかと思いますが、その一部は次のとおりです。

JMS Client for vFabric RabbitMQ は、vFabric RabbitMQ のクライアント ライブラリです。vFabric RabbitMQ は JMS プロバイダーではありませんが、JMS キューおよびトピック メッセージング モデルをサポートするために必要な機能を備えています。RabbitMQ 用の JMS クライアントは、RabbitMQ Java クライアント API の上に JMS 1.1 仕様を実装しているため、新規および既存の JMS アプリケーションは、Advanced Message Queuing Protocol (AMQP) を介して RabbitMQ ブローカーに接続できます。

于 2014-04-16T14:25:21.373 に答える