【めっせーじぶろーかー】
メッセージブローカー とは?
💡 サービス間の「伝言メモを預かる仲介者」
📌 このページのポイント
- 送信側(Producer)と受信側(Consumer)を直接つなげず非同期通信できる
- メッセージをキューに保管するので、受信側が停止しても失われない
- トラフィックの急増を吸収するバッファとして機能する
- RabbitMQ・Apache Kafka・Amazon SQSが代表例
APIで直接サービスを呼べばいいのに、なんでメッセージブローカーが必要なの?
直接呼ぶと「受け取る側が落ちていたらリクエストが消える」「送り側が応答を待つ間ブロックされる」という問題がある。ブローカーがキューにメッセージを保管しておけば、受け取る側が復旧したとき処理できるし、送り側はすぐ次の処理に移れるんだよ。
キューとトピックって何が違うの?
メッセージが届いたかどうかってどうやって確認するの?
ACK(Acknowledgement:確認応答)という仕組みがあるよ。ConsumerがメッセージをACKするまで、ブローカーはそのメッセージを保持する。処理に失敗してACKを返さなかったらブローカーが再送してくれるんだ。
メッセージの「冪等性」って何?同じメッセージが2回来たら2回処理されちゃうんじゃないの?
📖 おまけ:英語の意味
「Message Broker」 = メッセージの「仲買人・仲介者」
💬 株式の「ブローカー(仲介業者)」と同じ語源。買い手と売り手を直接つなげず間に立って取引を仲介するイメージだよ