メイン コンテンツにスキップ

再試行

Glasswall Halo は、HTTP ではなく非同期メッセージを使用して通信する複数のサービスで構成されています。これらのサービスについては、メッセージ処理中にエラーが発生した場合に、プラットフォームが障害をどのように処理するかを考慮しています。

同期 API と非同期 API

API は Glasswall Engine からの response queue を購読していますが、障害が発生した場合は http client にエラーレスポンスが返されます。

Engine service

アーキテクチャは、RabbitMQ reply-to queue を使用したリクエスト/レスポンスです。これは、障害が発生した場合でも、メッセージを処理する際に、失敗理由を含むレスポンスメッセージを引き続き送信することを意味します。

Report aggregator

Report aggregator は標準的なメッセージコンシューマーとして動作し、メッセージの再試行を可能にするための追加機能が導入されました。このサービスには 2 つの設定オプションがあります。

Retrymessages はデフォルトで true の bool で、メッセージを再試行する機能を有効にします。オフにすると、失敗したすべてのメッセージは直ちに dead letter queue に送られます。

Messagettl は、メッセージが queue 内に存在できる秒数を表す整数です。これは、失敗したメッセージが無限に再試行されることでメッセージが滞留するのを防ぐためです。メッセージの time to live が経過すると、そのメッセージは dead letter queue に送られます。コード上のデフォルトは 30 秒です。

Report aggregator の機能は、クライアントがファイルを受け取るうえで重要ではなく、集約レポートデータを生成するために使用されます。このため、Report aggregator メッセージが dead letter 化されても重大な障害とは見なされず、dead letter は許容されます(極端な場合に限ります)。