web-dev-qa-db-ja.com

JMS EcoシステムにおけるJMSブローカーの責任は何ですか?

私はこれを読んでいました 質問対応する回答 で、回答の最初の行のJMSブローカーという用語に混乱しました:

MS(ActiveMQはJMSブローカーの実装です)

JMS brokerとは正確に何であり、その責任は何ですか?

JMSに関するウィキペディアのページ はJMS ecoシステムのいくつかの要素をリストアップしていますが、ブローカーについては触れていません。

37
Geek

JMSブローカーの正式な定義はありませんが、メッセージキューとブローカーには概念的な違いがあります。これが私の見解です。

  • メッセージキューは、メッセージヘッダーを調べてメッセージの送信先を特定するだけです。メッセージキューは、メッセージ本文を調べたり、メッセージ本文の内容を変換するコードを実行したりしません。メッセージキューの使命は、メッセージを、最終的には1回だけ配信することであり、それらが送信された順になります。
  • メッセージブローカーは、メッセージ変換コードを簡単かつ効率的に記述できるプログラミング環境を提供します。たとえば、メッセージのコンテンツをフォーマットAからフォーマットBに変換する必要があり、フォーマットAを使用する古いクライアントを書き直さなくて済むようにしたいので、メッセージトランスレータプログラムを作成してメッセージにデプロイします。ブローカ。この場合、message brokerは、メッセージ処理コードの実行を担当する別のマシンで実行される可能性のある別のプロセスになります。

メッセージブローカーの大きな価値は、メッセージの同時処理、処理ロジックのフェイルオーバー、処理ロジックのデプロイ、監視とロギングなどについて、いくつかの非常に優れた機能を実行できることです。メッセージブローカーは専門的なものと考えてください。おそらくカスタム高水準言語でメッセージ処理コードを記述するためのアプリケーションサーバー。たとえば、IBMメッセージブローカーは、SQLの拡張機能であるESQLで、互いに接続するダイアグラムとノードとともにプログラムできます。メッセージボーカー用に作成されたプログラムは、プレーンなJMSを使用してすべてのコードを自分で作成した場合よりも短くなります。

ブローカーは一元化または分散できるため、たとえば、ニューヨークに中央ブローカーを設置し、ロンドンと香港にクライアントを接続することができます。または、ブローカーを分散させ、メッセージの送信元/宛先に近いメッセージ処理を行うインスタンスをロンドンと香港で実行することもできます。すべてのインスタンスは、管理インフラストラクチャと、データベースなどのその他のリソース、メッセージブローカーに依存します。話をする必要があります。

51
ams