Annotation Type ApplyFaultTolerance
@ApplyFaultTolerance("<identifier>") is present on a business method,
then a bean of type FaultTolerance with qualifier
@Identifier("<identifier>")
must exist. Such bean serves as a preconfigured set of fault tolerance strategies
and is used to guard invocations of the annotated business method(s).
It is customary to create such bean by declaring a static producer field.
That removes all scoping concerns, because only one instance ever exists. Using
a non-static producer field or a producer method means that scoping must be carefully
considered, especially if stateful fault tolerance strategies are configured.
The @ApplyFaultTolerance annotation may also be present on a bean class,
in which case it applies to all business methods declared by the class. If the
annotation is present both on the method and the class declaring the method,
the one on the method takes precedence.
When @ApplyFaultTolerance applies to a business method, all other fault tolerance
annotations that would otherwise also apply to that method are ignored.
A single preconfigured fault tolerance can be applied to multiple methods, as long as asynchrony
of all those methods is the same as the asynchrony of the fault tolerance instance. For example,
if the fault tolerance instance is created using FaultTolerance.create(), it can be
applied to all synchronous methods, but not to any asynchronous method. If the fault tolerance
instance is created using FaultTolerance.createAsync(), it can be applied to all
asynchronous methods that return CompletionStage, but not to synchronous methods or
asynchronous methods that return any other asynchronous type.
A single preconfigured fault tolerance can even be applied to multiple methods with different
return types, as long as the constraint on method asynchrony described above is obeyed. In such
case, it is customary to declare the fault tolerance instance as FaultTolerance<Object>
for synchronous methods, FaultTolerance<CompletionStage<Object>> for asynchronous
methods that return CompletionStage, and so on. Note that this effectively precludes
defining a useful fallback, because fallback can only be defined when the value type is known.
-
Required Element Summary
Required Elements
-
Element Details
-
value
String valueThe identifier of a preconfigured fault tolerance instance.
-