web-dev-qa-db-ja.com

JMSはメッセージの送受信にどのプロトコルを使用しますか?

JMS APIがメッセージの転送にプロトコルを使用するのか、それとも独自のプロトコルを使用するのかを知りたい。前者の場合、どのプロトコルですか?

私はネット上で多くの記事を読みましたが、これに対する答えを見つけることができませんでした。

26
Shenoy

標準JMS APIは単なるインターフェースのセットです。 JMSプロバイダー(WebSphere MQなど)は、これらのインターフェースに独自の実装を提供します。

すべてのJMS実装について確実に言える唯一のことは、それらがすべてJMS APIに準拠していることです。それ以外の場合、JMS実装は、JMS APIコントラクトを満たすために任意のプロトコルを使用できます。

ここで、「プロトコル」について具体的に尋ねるときは、参照する通信の「レイヤー」も定義する必要があります(たとえば、 OSI Model を見てください)。 JMSクライアントがネットワーク上の別のマシンにあるJMSサーバーと通信する必要がある場合(一般的な場合)、クライアントとサーバーの間で使用されるプロトコルは、何らかの形でTCP/IPに基づいています。ネットワーク上で、TCP/IPパケットがやり取りされているのを見ることができます。

上位レベルでは、保証はありません。実装者によって異なる独自のプロトコルが見つかる可能性があります。 JMSでは、多くの場合、パフォーマンスが重要であることに注意してください。 JMSベンダーは、プロトコル(「上」のTCP/IP)のパフォーマンスを確保するために多くの努力を払っています。たとえば、HTTPは機能しません。

36
Isaac

JMS仕様で言及されているようなプロトコルはありません。効率とセキュリティを提供するためのJMSプロバイダーと彼のアプローチに完全に依存しています。 。アプリケーション層プロトコルであるHTTPを使用するか、プロバイダーが提供する場合は、プレゼンテーション層プロトコルであるSSLを使用できます。

たとえば、ActiveMQは次のプロトコルをサポートします

  • AMQP
  • リストアイテム
  • MQTT
  • OpenWire
  • REST
  • RSSとAtom
  • ストンプ
  • WSIF
  • WS通知
  • XMPP

詳細 こちら

11
Aniket Thakur

AMQPプロトコルを使用します。 JMSを使用して、ミドルウェアが提供するMessage Queueを使用して1対1の通信を行うことができます。 JMSを使用して1対多を送信する場合、ミドルウェアはトピックを提供します。どちらも、少なくともIBM MQでは、ビットストリームでバイナリ形式を使用します。

0
Siva