【えーえむきゅーぴー】
AMQP とは?
最終更新:
💡 システム同士のメッセージ交換に、共通の通信ルールを
システム同士でメッセージを受け渡すための通信プロトコル。AMQP 1.0はOASIS標準で、RabbitMQなどが対応している。配信の信頼性は、実装や保存設定、確認応答・再送の扱いにも依存する。
📌 このページのポイント
- 送信側と受信側のメッセージ交換を定める。ブローカーを介した利用ができる
- AMQP 1.0と0-9-1は異なるプロトコルで、製品とクライアントが対応する版を確認する
- Exchange・Queue・Bindingによる振り分けは、AMQP 0-9-1のモデル
- 確認応答や保存・再送を適切に設計する。AMQPを使うだけで損失や重複がなくなるわけではない
AMQPって、メールみたいにメッセージを送るってこと?
人同士のメールというより、システム同士の伝言だよ。たとえば注文システムが「注文が入った」というメッセージを送り、在庫や配送の処理へつなぐ。AMQPは、その交換に使う通信ルールなんだ。
直接やりとりすればいいのに、なんでわざわざキューを挟むのかな?
Exchangeとかキューとか、仕組みがちょっと複雑そうだね?
AMQP 0-9-1では、ExchangeがBindingというルールに従ってQueueへ振り分けるよ。Queueが受信側の処理待ちのメッセージを持つんだ。郵便局の仕分けと届け先のポスト、という比喩が近いね。
AMQP 1.0も同じ仕組みなの?
絶対に届くし、二重に処理されることもないの?
そこまでは保証できないよ。RabbitMQでは、重要なメッセージに保存設定を使い、受領や処理の確認応答、障害時の再送を組み合わせる。再送で重複することもあるので、同じ注文を二度処理しない工夫も必要なんだ。
まとめ:ざっくりこれだけ覚えればOK!
「AMQP」って出てきたら「システム同士でメッセージを交換するための通信ルール」と思えばだいたいOK!
📖 おまけ:英語の意味
「Advanced Message Queuing Protocol」 = 高度なメッセージキューイングのプロトコル
💬 Advanced(高度な)、Message Queuing(メッセージのキューイング)、Protocol(通信の取り決め)の略だよ