
メッセージブローカー(統合ブローカーまたはインターフェースエンジンとも呼ばれる[ 1 ] )は、送信者の正式なメッセージングプロトコルから受信者の正式なメッセージングプロトコルにメッセージを変換する仲介コンピュータプログラムモジュールです。メッセージブローカーは、ソフトウェアアプリケーションが正式に定義されたメッセージを交換することで通信を行う通信ネットワークやコンピュータネットワークの要素です。 [ 1 ]メッセージブローカーはメッセージ指向ミドルウェア(MOM)の構成要素ですが、通常、MOMやリモートプロシージャコール(RPC)のような従来のミドルウェアの代替にはなりません。[ 2 ] [ 3 ]
概要
メッセージブローカーは、メッセージの検証、変換、ルーティングのためのアーキテクチャパターンです。アプリケーション間の通信を仲介し、メッセージ交換のためにアプリケーションが相互に認識する必要を最小限に抑えることで、効果的に分離を実現します。[ 4 ]
目的
ブローカーの主な目的は、アプリケーションから受信したメッセージを受け取り、それに対して何らかのアクションを実行することです。メッセージブローカーはエンドポイントを分離し、特定の非機能要件を満たし、仲介機能の再利用を促進します。例えば、メッセージブローカーは複数の受信者のためのワークロードキューやメッセージキューの管理に使用され、信頼性の高いストレージ、保証されたメッセージ配信、そして場合によってはトランザクション管理を提供します。
ライフサイクル
以下はブローカーが処理する可能性のある他のアクションの例です。[ 2 ] [ 3 ]
- メッセージを1つ以上の宛先にルーティングする
- メッセージを別の表現に変換する
- メッセージの集約を実行し、メッセージを複数のメッセージに分解して宛先に送信し、応答を1つのメッセージに再構成してユーザーに返します。
- 外部リポジトリと連携してメッセージを拡張したり保存したりする
- Webサービスを呼び出してデータを取得する
- イベントやエラーに応答する
- パブリッシュ・サブスクライブパターンを使用してコンテンツとトピックベースのメッセージルーティングを提供する
メッセージブローカーは、一般的にハブアンドスポーク型とメッセージバス型の2つの基本アーキテクチャのいずれかに基づいています。前者では、中央サーバーが統合サービスを提供するメカニズムとして機能しますが、後者では、メッセージブローカーはバス上で動作する通信バックボーンまたは分散サービスとして機能します。[ 3 ]さらに、よりスケーラブルなマルチハブアプローチを使用して、複数のブローカーを統合することもできます。[ 3 ]
リアルタイムセマンティクス
エンドツーエンドの予測可能性を備えた時間制限付き通信を実現するために特別に構築されたメッセージブローカーは、実行予測可能性を必要とするリアルタイムシステムの開発を可能にします。リアルタイム要件を持つシステムは、多くの場合、現実世界との相互作用を伴います(ロボット工学、車両自動化、ソフトウェア定義無線など)。
オブジェクト管理グループのリアルタイムCORBA仕様は、以下の要件を課すことで、予測可能な通信技術の理論的基礎を提供します。[ 5 ]
この仕様では、固定優先度 CORBA システムにおける適時性の「エンドツーエンドの予測可能性」は次のように定義されます。
- CORBA 呼び出しの処理中にリソースの競合を解決するために、クライアントとサーバー間のスレッドの優先順位を尊重する。
- エンドツーエンド処理中のスレッド優先度反転の継続時間を制限します。
- 操作呼び出しの待ち時間を制限します。
メッセージブローカーソフトウェアのリスト
- アマゾン ウェブ サービス (AWS) Amazon MQ
- アマゾン ウェブ サービス (AWS)キネシス
- アパッチ
- クローバーリーフ(Enovation Lifeline - NL)
- Comverse メッセージブローカー ( Comverse Technology )
- Coreflux Coreflux MQTTブローカー
- Eclipse Mosquitto MQTT ブローカー( Eclipse Foundation )
- EMQX EMQX MQTTブローカー
- Enduro/Xトランザクション メッセージ キュー (TMQ)
- ファイナンシャル フュージョン メッセージ ブローカー ( Sybase )
- Fuse メッセージブローカー(エンタープライズ ActiveMQ)
- ギアマン
- Google Cloud Pub/Sub ( Google )
- HiveMQ HiveMQ MQTT ブローカー
- HornetQ ( Red Hat ) (現在は Apache Artemis の一部)
- IBM アプリコネクト
- IBM MQ
- JBoss メッセージング( JBoss )
- ヨラム
- Crystalで書かれたLavinMQ
- Microsoft Azure サービス バス(マイクロソフト)
- Microsoft BizTalk Server (マイクロソフト)
- MigratoryData ( C10M問題に対処するために書かれたパブリッシュ/サブスクライブ型WebSocketメッセージブローカー[ 6 ])
- NATS ( MIT オープンソースライセンス、Goで記述)
- IoT Edge向けNanoMQ MQTTブローカー
- メッセージキューを開く
- Oracle メッセージ ブローカー ( Oracle Corporation )
- ORBexpress(OIS)
- Adaで書かれたORBexpress
- C#で書かれたORBexpress
- C++で書かれたORBexpress
- Javaで書かれたORBexpress
- RabbitMQ ( Mozilla パブリック ライセンス、Erlangで記述)
- Redpanda ( C++で書かれた Apache Kafka API を実装)
- Redisデータベース、キャッシュ、メッセージ ブローカーとして使用されるオープン ソースのインメモリ データ構造ストア。
- SAP PI ( SAP AG )
- SMC SMCプラットフォーム
- ソレースパブリッシュ/サブスクライブ+
- スプレッドツールキット
- Tarantool は、メッセージ キュー用のストアド プロシージャのセットを備えた NoSQL データベースです。
- TIBCOエンタープライズ メッセージ サービス
- WSO2 メッセージブローカー
- ゼロMQ
参照
参考文献
- ^ a b「IB(統合ブローカー)」。IT用語集。Gartner, Inc. 2018年5月17日閲覧。
- ^ a b Kale, V. (2014). 「統合テクノロジー」 .ビジネスおよびテクノロジーマネージャーのためのクラウドコンピューティングガイド:分散コンピューティングからクラウドウェアアプリケーションまで. CRC Press. pp. 107– 134. ISBN 9781482219227. 2018年5月17日閲覧。
- ^ a b c d Samtani, G.; Sadhwani, D. (2013). 「統合ブローカーとWebサービス」 . Clark, M.; Fletcher, P.; Hanson, JJ; 他編. Webサービスビジネス戦略とアーキテクチャ. Apress. pp. 71– 84. ISBN 9781430253563. 2018年5月17日閲覧。
- ^ Ejsmont, A. (2015). 「非同期処理」.スタートアップエンジニアのためのWebスケーラビリティ. McGraw Hill Professional. pp. 275– 276. ISBN 9780071843669。
- ^ 「リアルタイムCORBA仕様」 .オブジェクト管理グループ. 2005年1月4日. 1-4ページのセクション1.3.4.
- ^ Rotaru, Mihai; et al. (2017年12月). 「migratorydataによる数百万人のユーザーへの信頼性の高いメッセージング」.第18回ACM/IFIP/USENIXミドルウェア会議:インダストリアルトラック議事録. pp. 1– 7. arXiv : 1712.09876 . doi : 10.1145/3154448.3154449 . ISBN 9781450352000. S2CID 35552786 .