public class FutureContext extends Object
CompletableFuture> signature
you do not need to use this class since you will get a Future response directly.
Remember to save the Future reference before making another call using the same thread, otherwise, the current Future will be override by the new one, which means you will lose the chance get the return value.
| 构造器和说明 |
|---|
FutureContext() |
| 限定符和类型 | 方法和说明 |
|---|---|
<T> CompletableFuture<T> |
getCompatibleCompletableFuture()
已过时。
|
<T> CompletableFuture<T> |
getCompletableFuture()
get future.
|
static FutureContext |
getContext() |
void |
setCompatibleFuture(CompletableFuture<?> compatibleFuture)
已过时。
|
void |
setFuture(CompletableFuture<?> future)
set future.
|
public static FutureContext getContext()
public <T> CompletableFuture<T> getCompletableFuture()
T - public void setFuture(CompletableFuture<?> future)
future - @Deprecated public <T> CompletableFuture<T> getCompatibleCompletableFuture()
@Deprecated public void setCompatibleFuture(CompletableFuture<?> compatibleFuture)
public final class TracingFilter implements Filter {
public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
Result result = invoker.invoke(invocation);
Future<Object> future = rpcContext.getFuture();
if (future instanceof FutureAdapter) {
((FutureAdapter) future).getFuture().setCallback(new FinishSpanCallback(span));
}
......
}
}
Start from 2.7.3, you don't have to get Future from RpcContext, we recommend using Result directly:
public final class TracingFilter implements Filter {
public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
Result result = invoker.invoke(invocation);
result.getResponseFuture().whenComplete(new FinishSpanCallback(span));
......
}
}
Copyright © 2011–2021 The Apache Software Foundation. All rights reserved.