Skip to content
Latchkey

メッセージブローカーとは? メッセージをルーティングするハブ

メッセージブローカーは、プロデューサーからメッセージを受け取り、設定したルールに基づいて適切なコンシューマーへルーティングするミドルウェアです。

キューが単一のバッファであるのに対し、メッセージブローカーは多数のキューやトピックを管理し、各メッセージの行き先を決め、配信・永続化・リトライを扱うシステムです。RabbitMQ、Kafka、そしてSQSやPub/Subのようなクラウドサービスがいずれもこの役割を担います。ブローカーはイベント駆動や非同期システムのバックボーンです。

ブローカーがすること

ブローカーはメッセージを受け取り、どのキューやサブスクライバーが受信するかを決めるルーティングルールを適用し、設定に従って永続化し、配信と確認応答を追跡します。プロデューサーとコンシューマーの両方が接続する、メッセージング基盤の中心的な部品です。

キュー対ブローカー

キューは一つのバッファであり、ブローカーはキューやトピックをホストし、ルーティングを強制し、配信のセマンティクスを管理するサーバーです。キューは利用するもの、ブローカーは運用するものです。

一般的なルーティングモデル

  • ポイントツーポイント: 一つのメッセージを正確に一つのコンシューマーへ。
  • publish-subscribe: 一つのメッセージを多数のサブスクライバーへファンアウト。
  • トピックまたはrouting key: メッセージを関心のあるコンシューマーにマッチ。
  • dead-letterルーティング: 配信できないメッセージを脇に置く。

パイプラインの中のブローカー

現実的なテストにはブローカーの起動が必要です。CIでは一般に、ブローカーをservice containerとして起動し、発行と消費の経路を実行し、実行ごとに片付けます。これにより、モックでは得られないルーティングと配信の振る舞いに対する確信が得られます。

運用上の重み

ブローカーは重要な基盤です。停止すれば非同期の流れが止まります。そのため、ブローカー周りのデプロイ安全性、health check、モニタリングへの要求水準が上がり、その設定はコードとして管理しCIでテストするものになります。

ブローカーのテストを高速に保つ

テスト実行ごとにブローカーを起動するのはタダではありません。ウォームなマネージドrunner (Latchkeyなど) はその起動コストを小さく保ち、ブローカーを使う統合スイートを素早いままにします。

重要なポイント

  • メッセージブローカーは、メッセージをルーティング・永続化・配信するサーバーです。
  • キューは単一のバッファですが、ブローカーはルーティングルールを持つ多数のキューやトピックを管理します。
  • 現実的なブローカーのテストにはブローカーの起動が必要で、CIの起動時間を増やします。

関連ガイド