第4章 AMQP
AMQP は、メッセージを確実に送受信するためのオープンインターネットプロトコルです。複数のソフトウェアベンダーや主要な機関によってサポートされています。AMQP 1.0 は、2012 年に OASIS 標準になり、2014 年に ISO 標準になりました。
- セッション多重化を備えたフレーム化されたプロトコル
- ピアツーピアおよびクライアントサーバー接続をサポートします
- ロスレスデータ交換のための標準タイプのシステムを提供します
- 分散システムの信頼性を高めるためのフロー制御、ハートビート、およびリソース制限を提供します
- スペース効率の高いバイナリーエンコーディングおよびパイプラインを使用して、レイテンシーを削減します
4.1. AMQP 配信保証
決済用の AMQP モデルは、メッセージ配信のライフサイクルに基づいています。リンクの両端に、メッセージ転送を表すエンティティーが作成され、一定期間存在し、最後に解決されます。つまり、忘れることができます。配信のライフサイクルを組み合わせた場合は、関心のある 4 つのイベントがあります。
- 配信は送信者で作成されます。
- 配信は受信者で作成されます。
- 配達は送信者で決済されます。
- 配達は受信者で決済されます。
送信者と受信者は同時に動作しているため、これらのイベントはさまざまな順序で発生する可能性があり、これらのイベントの順序により、メッセージ配信の保証が異なります。
最大 1 回の配信
最大 1 回の配信は、事前決済またはファイアアンドフォーゲット配信とも呼ばれます。
- 配信は送信者で作成されます。
- 配達は送信者で決済されます。
- 配信は受信者で作成されます。
- 配達は受信者で決済されます。
この設定では、送信者は受信者に到着する前に配信を決済 (つまり、忘れる) し、実行中の配信に何かが起こった場合、送信者は再送の根拠がありません。
このモードは、定期的なセンサーデータなど、一時的なメッセージの損失が許容されるアプリケーション、またはアプリケーション自体が障害を検出して再送信できるアプリケーションに適しています。
少なくとも 1 回の配信
- 配信は送信者で作成されます。
- 配信は受信者で作成されます。
- 配達は受信者で決済されます。
- 配達は送信者で決済されます。
この設定では、受信者は配信を受信したときに決済し、送信者は受信者が決済したことを確認すると決済します。実行中の配達に問題が発生した場合、送信者は再送することができます。ただし、受信者はすでに配信を忘れているため、再送するとメッセージの配信が重複します。アプリケーションは、一意のメッセージ ID を使用して重複を除外できます。