[解決済み] 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はワイヤレベルのプロトコルです。 プロトコルです。ワイヤーレベルのプロトコルは、オクテットのストリームとしてネットワークに送信されるデータの形式を記述したものです。 オクテットのストリームとしてネットワークを介して送信されるデータのフォーマットの記述です。 したがって、このデータ形式に準拠したメッセージを作成し、解釈できるツールはすべて このデータフォーマットに準拠したメッセージを作成し、解釈できるツールは、実装言語に関係なく、他の準拠したツールと相互運用することができます。 実装言語に関係なく相互運用できます。
知っておくべきいくつかの重要なこと。
- AMQPはJMS APIを実装していないメッセージング技術であることに留意してください。
- JMSはAPIで、AMQPはプロトコルです。ですから、JMSのデフォルトプロトコルは何かというのは意味がありません。 を呼び出すとき、クライアントアプリケーションは接続プロトコルとしてHTTP/Sを使用します。 WebLogic ウェブサービスを呼び出すとき、クライアントアプリケーションは接続プロトコルとして HTTP/S を使用します。
- JMSは単なるAPI仕様です。それはいかなるプロトコルも使用しません。JMSプロバイダー(ActiveMQなど)は、JMS APIを実現するために任意の基礎的なプロトコルを使用することができます。 JMS APIを実現することができます。例:Apache ActiveMQは以下のプロトコルのいずれかを使用することができます。 以下のプロトコルのいずれかを使用できます。AMQP、MQTT、OpenWire、REST(HTTP)、RSS、Atom。 Stomp、WSIF、WS Notification、XMPP。以下を読むことをお勧めします。 使用方法 JMSトランスポートを接続プロトコルとして使用する .
グッドラック :)
関連
-
Java Error スレッド "AWT-EventQueue-0" で例外発生 java.lang.
-
スキャナは、タイプに解決することはできません最もルーキー初心者の質問
-
プロジェクトの依存関係を解決できなかった 解決
-
Eclipseでプロジェクトエクスプローラービューとパッケージエクスプローラービューを使う
-
コミットには何も追加されないが、未追跡のファイルが存在し、gitで未追跡のファイルに対する完璧な解決策
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] リフレクションとは何か、なぜ有用なのか?
-
[解決済み] Javaで配列を宣言し、初期化する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
スタイルが読み込まれず、ブラウザコンソールでエラーが報告される。リソースはスタイルシートとして解釈されますが、MIMEタイプtext/htmlで転送されます。
-
Spring Boot による HTTPS アクセスの設定
-
final, finally, finalizeの違いについて話してください。
-
javaで非静的な解を静的な参照にすることができない
-
サーブレットクラスのインスタンス化エラーの解決法
-
linux run jarfile Invalid or corrupt jarfile error.
-
javaでクラスを作成すると、enclosing classでないように見える
-
java -serverコマンドで「Error: no `server' JVM at ... jvm.dll」を解決する方法です。
-
このラインで複数のマーカーを解決する方法
-
maven プラグイン エラー プラグインの実行は、ライフサイクル構成ソリューションの対象外です。