JMS APIがメッセージの転送にプロトコルを使用するのか、それとも独自のプロトコルを使用するのかを知りたい。前者の場合、どのプロトコルですか?
私はネット上で多くの記事を読みましたが、これに対する答えを見つけることができませんでした。
標準JMS APIは単なるインターフェースのセットです。 JMSプロバイダー(WebSphere MQなど)は、これらのインターフェースに独自の実装を提供します。
すべてのJMS実装について確実に言える唯一のことは、それらがすべてJMS APIに準拠していることです。それ以外の場合、JMS実装は、JMS APIコントラクトを満たすために任意のプロトコルを使用できます。
ここで、「プロトコル」について具体的に尋ねるときは、参照する通信の「レイヤー」も定義する必要があります(たとえば、 OSI Model を見てください)。 JMSクライアントがネットワーク上の別のマシンにあるJMSサーバーと通信する必要がある場合(一般的な場合)、クライアントとサーバーの間で使用されるプロトコルは、何らかの形でTCP/IPに基づいています。ネットワーク上で、TCP/IPパケットがやり取りされているのを見ることができます。
上位レベルでは、保証はありません。実装者によって異なる独自のプロトコルが見つかる可能性があります。 JMSでは、多くの場合、パフォーマンスが重要であることに注意してください。 JMSベンダーは、プロトコル(「上」のTCP/IP)のパフォーマンスを確保するために多くの努力を払っています。たとえば、HTTPは機能しません。
JMS仕様で言及されているようなプロトコルはありません。効率とセキュリティを提供するためのJMSプロバイダーと彼のアプローチに完全に依存しています。 。アプリケーション層プロトコルであるHTTPを使用するか、プロバイダーが提供する場合は、プレゼンテーション層プロトコルであるSSLを使用できます。
たとえば、ActiveMQは次のプロトコルをサポートします
詳細 こちら 。
AMQPプロトコルを使用します。 JMSを使用して、ミドルウェアが提供するMessage Queueを使用して1対1の通信を行うことができます。 JMSを使用して1対多を送信する場合、ミドルウェアはトピックを提供します。どちらも、少なくともIBM MQでは、ビットストリームでバイナリ形式を使用します。