2.2. Eclipse MicroProfile Fault Tolerance
2.2.1. Eclipse MicroProfile Fault Tolerance 仕様について
Eclipse MicroProfile Fault Tolerance 仕様は、分散したマイクロサービスに特有のエラーに対応するストラテジーを定義します。
Eclipse MicroProfile Fault Tolerance 仕様は、エラーを処理する以下のストラテジーを定義します。
- Timeout
- 実行が終了べき時間を定義します。タイムアウトを定義すると、実行を永久に待機できなくなります。
- Retry
- 失敗した実行を再試行する基準を定義します。
- Fallback
- 実行に失敗した場合の代替を指定します。
- CircuitBreaker
- 一時的に停止するまでの実行試行回数を定義します。遅延の長さを定義すると、実行を再開することができます。
- Bulkhead
- システムの一部で障害を分離して、残りのシステムを機能させます。
- Asynchronous
- 別のスレッドでクライアント要求を実行します。
2.2.2. JBoss EAP での Eclipse MicroProfile Fault Tolerance
microprofile-fault-tolerance-smallrye
サブシステムは、JBoss EAP での Eclipse MicroProfile Fault Tolerance のサポートを提供します。このサブシステムは、JBoss EAP XP ストリームでのみ利用できます。
microprofile-fault-tolerance-smallrye
サブシステムはインターセプターバインディングに以下のアノテーションを提供します。
-
@Timeout
-
@Retry
-
@Fallback
-
@CircuitBreaker
-
@Bulkhead
-
@Asynchronous
これらのアノテーションはクラスレベルまたはメソッドレベルでバインドできます。クラスにバインドされたアノテーションは、そのクラスのすべてのビジネスメソッドに適用されます。
以下のルールはバインディングインターセプターに適用されます。
コンポーネントクラスがクラスレベルのインターセプターバインディングを宣言または継承する場合、以下の制限が適用されます。
- クラスは final を宣言することはできません。
- クラスには static、private、または final メソッドを含めることはできません。
- コンポーネントクラスの静的ではない非プライベートメソッドがメソッドレベルのインターセプターバインディングを宣言する場合、メソッドやコンポーネントクラスも final 宣言されません。
フォールトトレランス操作には以下の制限があります。
- フォールトトレランスインターセプターバインディングは bean クラスまたは bean クラスメソッドに適用する必要があります。
- 呼び出し時では、呼び出しが CDI 仕様に定義されたビジネスメソッド呼び出しである必要があります。
以下の条件が両方とも true の場合、操作はフォールトトレランスと見なされません。
- メソッド自体は、フォールトトレランスインターセプターにバインドされません。
- メソッドが含まれるクラスは、フォールトトレランスインターセプターにバインドされません。
microprofile-fault-tolerance-smallrye
サブシステムは、Eclipse MicroProfile Fault Tolerance が提供する設定オプションに加え、以下の設定オプションを提供します。
-
io.smallrye.faulttolerance.globalThreadPoolSize
-
io.smallrye.faulttolerance.timeoutExecutorThreads