第4章 AMQP

AMQP は、メッセージを確実に送受信するためのオープンインターネットプロトコルです。複数のソフトウェアベンダーや主要な機関によってサポートされています。AMQP 1.0 は、2012 年に OASIS 標準になり、2014 年に ISO 標準になりました。

  • セッション多重化を備えたフレーム化されたプロトコル
  • ピアツーピアおよびクライアントサーバー接続をサポートします
  • ロスレスデータ交換のための標準タイプのシステムを提供します
  • 分散システムの信頼性を高めるためのフロー制御、ハートビート、およびリソース制限を提供します
  • スペース効率の高いバイナリーエンコーディングおよびパイプラインを使用して、レイテンシーを削減します

4.1. AMQP 配信保証

決済用の AMQP モデルは、メッセージ配信のライフサイクルに基づいています。リンクの両端に、メッセージ転送を表すエンティティーが作成され、一定期間存在し、最後に解決されます。つまり、忘れることができます。配信のライフサイクルを組み合わせた場合は、関心のある 4 つのイベントがあります。

  • 配信は送信者で作成されます。
  • 配信は受信者で作成されます。
  • 配達は送信者で決済されます。
  • 配達は受信者で決済されます。

送信者と受信者は同時に動作しているため、これらのイベントはさまざまな順序で発生する可能性があり、これらのイベントの順序により、メッセージ配信の保証が異なります。

最大 1 回の配信

最大 1 回の配信は、事前決済またはファイアアンドフォーゲット配信とも呼ばれます。

  1. 配信は送信者で作成されます。
  2. 配達は送信者で決済されます。
  3. 配信は受信者で作成されます。
  4. 配達は受信者で決済されます。

この設定では、送信者は受信者に到着する前に配信を決済 (つまり、忘れる) し、実行中の配信に何かが起こった場合、送信者は再送の根拠がありません。

このモードは、定期的なセンサーデータなど、一時的なメッセージの損失が許容されるアプリケーション、またはアプリケーション自体が障害を検出して再送信できるアプリケーションに適しています。

少なくとも 1 回の配信

  1. 配信は送信者で作成されます。
  2. 配信は受信者で作成されます。
  3. 配達は受信者で決済されます。
  4. 配達は送信者で決済されます。

この設定では、受信者は配信を受信したときに決済し、送信者は受信者が決済したことを確認すると決済します。実行中の配達に問題が発生した場合、送信者は再送することができます。ただし、受信者はすでに配信を忘れているため、再送するとメッセージの配信が重複します。アプリケーションは、一意のメッセージ ID を使用して重複を除外できます。