Class KafkaFuture<T>
- All Implemented Interfaces:
Future<T>
public abstract class KafkaFuture<T> extends Object implements Future<T>
Relation to CompletionStage
It is possible to obtain a CompletionStage
from a
KafkaFuture
instance by calling toCompletionStage()
.
If converting whenComplete(BiConsumer)
or thenApply(BaseFunction)
to
CompletableFuture.whenComplete(java.util.function.BiConsumer)
or
CompletableFuture.thenApply(java.util.function.Function)
be aware that the returned
KafkaFuture
will fail with an ExecutionException
, whereas a CompletionStage
fails
with a CompletionException
.
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
KafkaFuture.BaseFunction<A,B>
A function which takes objects of type A and returns objects of type B.static interface
KafkaFuture.BiConsumer<A,B>
A consumer of two different types of object.static class
KafkaFuture.Function<A,B>
Deprecated.Since Kafka 3.0. -
Constructor Summary
Constructors Constructor Description KafkaFuture()
-
Method Summary
Modifier and Type Method Description static KafkaFuture<Void>
allOf(KafkaFuture<?>... futures)
Returns a new KafkaFuture that is completed when all the given futures have completed.abstract boolean
cancel(boolean mayInterruptIfRunning)
If not already completed, completes this future with a CancellationException.protected abstract boolean
complete(T newValue)
If not already completed, sets the value returned by get() and related methods to the given value.static <U> KafkaFuture<U>
completedFuture(U value)
Returns a new KafkaFuture that is already completed with the given value.protected abstract boolean
completeExceptionally(Throwable newException)
If not already completed, causes invocations of get() and related methods to throw the given exception.abstract T
get()
Waits if necessary for this future to complete, and then returns its result.abstract T
get(long timeout, TimeUnit unit)
Waits if necessary for at most the given time for this future to complete, and then returns its result, if available.abstract T
getNow(T valueIfAbsent)
Returns the result value (or throws any encountered exception) if completed, else returns the given valueIfAbsent.abstract boolean
isCancelled()
Returns true if this CompletableFuture was cancelled before it completed normally.abstract boolean
isCompletedExceptionally()
Returns true if this CompletableFuture completed exceptionally, in any way.abstract boolean
isDone()
Returns true if completed in any fashion: normally, exceptionally, or via cancellation.abstract <R> KafkaFuture<R>
thenApply(KafkaFuture.BaseFunction<T,R> function)
Returns a new KafkaFuture that, when this future completes normally, is executed with this futures's result as the argument to the supplied function.abstract <R> KafkaFuture<R>
thenApply(KafkaFuture.Function<T,R> function)
abstract CompletionStage<T>
toCompletionStage()
Gets aCompletionStage
with the same completion properties as thisKafkaFuture
.abstract KafkaFuture<T>
whenComplete(KafkaFuture.BiConsumer<? super T,? super Throwable> action)
Returns a new KafkaFuture with the same result or exception as this future, that executes the given action when this future completes.
-
Constructor Details
-
KafkaFuture
public KafkaFuture()
-
-
Method Details
-
completedFuture
Returns a new KafkaFuture that is already completed with the given value. -
allOf
Returns a new KafkaFuture that is completed when all the given futures have completed. If any future throws an exception, the returned future returns it. If multiple futures throw an exception, which one gets returned is arbitrarily chosen. -
toCompletionStage
Gets aCompletionStage
with the same completion properties as thisKafkaFuture
. The returned instance will complete when this future completes and in the same way (with the same result or exception).Calling
toCompletableFuture()
on the returned instance will yield aCompletableFuture
, but invocation of the completion methods (complete()
and other methods in thecomplete*()
andobtrude*()
families) on thatCompletableFuture
instance will result inUnsupportedOperationException
being thrown. Unlike a "minimal"CompletableFuture
, theget*()
and other methods ofCompletableFuture
that are not inherited fromCompletionStage
will work normally.If you want to block on the completion of a KafkaFuture you should use
get()
,get(long, TimeUnit)
orgetNow(Object)
, rather then calling.toCompletionStage().toCompletableFuture().get()
etc.- Since:
- Kafka 3.0
-
thenApply
Returns a new KafkaFuture that, when this future completes normally, is executed with this futures's result as the argument to the supplied function. The function may be invoked by the thread that callsthenApply
or it may be invoked by the thread that completes the future. -
thenApply
-
whenComplete
public abstract KafkaFuture<T> whenComplete(KafkaFuture.BiConsumer<? super T,? super Throwable> action)Returns a new KafkaFuture with the same result or exception as this future, that executes the given action when this future completes. When this future is done, the given action is invoked with the result (or null if none) and the exception (or null if none) of this future as arguments. The returned future is completed when the action returns. The supplied action should not throw an exception. However, if it does, the following rules apply: if this future completed normally but the supplied action throws an exception, then the returned future completes exceptionally with the supplied action's exception. Or, if this future completed exceptionally and the supplied action throws an exception, then the returned future completes exceptionally with this future's exception. The action may be invoked by the thread that callswhenComplete
or it may be invoked by the thread that completes the future.- Parameters:
action
- the action to preform- Returns:
- the new future
-
complete
If not already completed, sets the value returned by get() and related methods to the given value. -
completeExceptionally
If not already completed, causes invocations of get() and related methods to throw the given exception. -
cancel
public abstract boolean cancel(boolean mayInterruptIfRunning)If not already completed, completes this future with a CancellationException. Dependent futures that have not already completed will also complete exceptionally, with a CompletionException caused by this CancellationException. -
get
Waits if necessary for this future to complete, and then returns its result.- Specified by:
get
in interfaceFuture<T>
- Throws:
InterruptedException
ExecutionException
-
get
public abstract T get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutExceptionWaits if necessary for at most the given time for this future to complete, and then returns its result, if available.- Specified by:
get
in interfaceFuture<T>
- Throws:
InterruptedException
ExecutionException
TimeoutException
-
getNow
Returns the result value (or throws any encountered exception) if completed, else returns the given valueIfAbsent. -
isCancelled
public abstract boolean isCancelled()Returns true if this CompletableFuture was cancelled before it completed normally.- Specified by:
isCancelled
in interfaceFuture<T>
-
isCompletedExceptionally
public abstract boolean isCompletedExceptionally()Returns true if this CompletableFuture completed exceptionally, in any way. -
isDone
public abstract boolean isDone()Returns true if completed in any fashion: normally, exceptionally, or via cancellation.
-