public abstract class KafkaFuture<T> extends Object implements Future<T>
CompletionStageIt 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.
| Modifier and Type | Class and 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. Use the
KafkaFuture.BaseFunction functional interface. |
| Constructor and Description |
|---|
KafkaFuture() |
| Modifier and Type | Method and 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 a
CompletionStage with the same completion properties as this KafkaFuture. |
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.
|
public static <U> KafkaFuture<U> completedFuture(U value)
public static KafkaFuture<Void> allOf(KafkaFuture<?>... futures)
public abstract CompletionStage<T> toCompletionStage()
CompletionStage with the same completion properties as this KafkaFuture.
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 a CompletableFuture,
but invocation of the completion methods (complete() and other methods in the complete*()
and obtrude*() families) on that CompletableFuture instance will result in
UnsupportedOperationException being thrown. Unlike a "minimal" CompletableFuture,
the get*() and other methods of CompletableFuture that are not inherited from
CompletionStage will work normally.
If you want to block on the completion of a KafkaFuture you should use
get(), get(long, TimeUnit) or getNow(Object), rather then calling
.toCompletionStage().toCompletableFuture().get() etc.
public abstract <R> KafkaFuture<R> thenApply(KafkaFuture.BaseFunction<T,R> function)
thenApply or it may be invoked by the thread that
completes the future.public abstract <R> KafkaFuture<R> thenApply(KafkaFuture.Function<T,R> function)
public abstract KafkaFuture<T> whenComplete(KafkaFuture.BiConsumer<? super T,? super Throwable> action)
whenComplete or it may be invoked by the thread that
completes the future.action - the action to preformprotected abstract boolean complete(T newValue)
protected abstract boolean completeExceptionally(Throwable newException)
public abstract boolean cancel(boolean mayInterruptIfRunning)
public abstract T get() throws InterruptedException, ExecutionException
get in interface Future<T>InterruptedExceptionExecutionExceptionpublic abstract T get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException
get in interface Future<T>InterruptedExceptionExecutionExceptionTimeoutExceptionpublic abstract T getNow(T valueIfAbsent) throws InterruptedException, ExecutionException
public abstract boolean isCancelled()
isCancelled in interface Future<T>public abstract boolean isCompletedExceptionally()