MQメッセージキューの進化史とMQの汎用的なアーキテクチャ
MQ メッセージ キューの開発の歴史
- 初期のメッセージキュー:初期のメッセージキューは主にホストメモリーをベースにしたメッセージ伝達システムで、プロセス間通信やデータ転送に利用されていました。
- 第一世代メッセージキュー:第一世代メッセージキューは主にメッセージ伝送ミドルウェア(Middleware)のアーキテクチャに基づき、例えばIBM MQSeriesやTIBCO Rendezvousなどが該当します。これらのシステムでは、メッセージの転送と伝達のために独立したメッセージサーバーが使用されていました。
- 第2世代メッセージキューイング:第2世代メッセージキューイングは、主に ActiveMQ や RabbitMQ などのオープンソースミドルウェアのアーキテクチャをベースとしています。これらのシステムは、ネットワークとプロトコルを使用してメッセージの配信と処理を行います。
- 最新のMQ:最新のMQ は主に Kafka や RocketMQ などの分散型アーキテクチャベースのメッセージキューシステムです。これらのシステムは、高可用性と拡張性を確保するために分散ストレージとレプリケーションを使用しています。
MQ共通アーキテクチャ
MQの一般的なアーキテクチャは通常、以下の主要コンポーネントで構成されています。
- プロデューサ: メッセージの作成と送信を担当します。
- コンシューマー(Consumer): メッセージを受信、処理する。
- キュー(Queue): メッセージを格納するコンテナで、プロデューサーがメッセージをキューに送信し、コンシューマーがキューからメッセージを受け取ります。
- メッセージブローカーは、プロデューサーからメッセージを受け取り、それらをキューに格納して、コンシューマーにプッシュします。
- メッセージプロトコル(Message Protocol):メッセージのフォーマットと転送プロトコルを定義するために使用される。一般的なメッセージプロトコルには、AMQP(Advanced Message Queuing Protocol)、MQTT(Message Queuing Telemetry Transport)、STOMP(Simple Text Oriented Messaging Protocol)などがある。
- ルーティング(Routing): メッセージをプロデューサーから対応するキューやコンシューマーにルーティングする役割を担います。
- 永続化(Persistence): メッセージをディスクに保存し、メッセージの損失を防止する。
- 確実なメッセージの配信と処理を保証します(リトライとフェイルオーバーなど)
- 監視と管理(Monitoring and Management):メッセージキューの監視と管理機能を提供し、メッセージの統計情報、チューニング、障害の切り分けなどを可能にします。