DeliverySpec.RetryAfterMaxフィールド¶
フラグ名: delivery-retryafter
ステージ: アルファ、デフォルトで無効
トラッキング課題: #5811
ペルソナ: 開発者
イベント配信パラメーターを構成するためのdelivery
仕様を使用する場合、retryAfterMax
フィールドを使用して、**429**と**503**のレスポンスのバックオフ時間を計算する際のHTTP Retry-Afterヘッダーの処理方法を指定できます。チャネル、サブスクリプション、ブローカー、トリガー、およびdelivery
フィールドを受け入れるその他のすべてのリソース仕様にdelivery
仕様を指定できます。
retryAfterMax
フィールドは、delivery
仕様で再試行を実行するように構成した場合にのみ有効になり、**429**および**503**の応答コードでの再試行にのみ関連します。このフィールドは、大きな**Retry-After**期間がスループットに影響することを防ぐためのオーバーライドを提供し、ISO 8601形式で指定する必要があります。通常のバックオフ期間とRetry-Afterヘッダー値のうち、大きい方が次の再試行で使用されます。PT0S
の「ゼロ」値を指定すると、**Retry-After**のサポートが無効になります。
この機能以前は、Knative Eventingの実装では**Retry-After**ヘッダーがサポートされていませんでしたが、このサポートを標準化する手段を提供しようとしています。まず、この機能は**オプトイン**ですが、最終的な状態は次のとおり**オプトアウト**になります。
機能ステージ | 機能フラグ | retryAfterMaxフィールドなし | retryAfterMaxフィールドあり |
---|---|---|---|
アルファ/ベータ | 無効 | Webhook検証で承認済み、Retry-Afterヘッダーは適用されません | Webhook検証で拒否済み |
アルファ/ベータ | 有効 | Webhook検証で承認済み、Retry-Afterヘッダーは適用されません | Webhook検証で承認済み、最大オーバーライド>0の場合、Retry-Afterヘッダーが適用されます |
安定版/GA | n/a | 最大オーバーライドなしでRetry-Afterヘッダーが適用されます | 最大オーバーライド>0の場合、Retry-Afterヘッダーが適用されます |
次の例は、イベントの送信を3回再試行し、最大バックオフを120秒に設定しながら**Retry-After**ヘッダーを尊重するサブスクリプションを示しています。
apiVersion: messaging.knative.dev/v1
kind: Subscription
metadata:
name: example-subscription
namespace: example-namespace
spec:
subscriber:
ref:
apiVersion: serving.knative.dev/v1
kind: Service
name: example-sink
delivery:
backoffDelay: PT2S
backoffPolicy: linear
retry: 3
retryAfterMax: PT120S
注記
機能フラグはWebhook検証を通じてretryAfterMax
フィールドのすべてのDeliverySpecの使用を強制しますが、チャネルやソースなど、すべての実装が実際にこのフィールドのサポートを実装していることを保証するものではありません。共有HTTPMessageSender.SendWithRetries()
ロジックは、この機能をサポートするように強化されており、再試行を実行するためにこれを使用するすべての実装は自動的に恩恵を受けます。この共有ライブラリに基づいていない拡張機能の実装(RabbitMQやGoogle Pub/Subなど)では、retryAfterMax
フィールドを尊重するために追加の開発作業が必要です。