public class PatternsCS
extends java.lang.Object
Constructor and Description |
---|
PatternsCS() |
Modifier and Type | Method and Description |
---|---|
static <T> java.util.concurrent.CompletionStage<T> |
after(scala.concurrent.duration.FiniteDuration duration,
Scheduler scheduler,
scala.concurrent.ExecutionContext context,
java.util.concurrent.Callable<java.util.concurrent.CompletionStage<T>> value)
Returns a
CompletionStage that will be completed with the success or failure of the provided Callable
after the specified duration. |
static <T> java.util.concurrent.CompletionStage<T> |
after(scala.concurrent.duration.FiniteDuration duration,
Scheduler scheduler,
scala.concurrent.ExecutionContext context,
java.util.concurrent.CompletionStage<T> value)
Returns a
CompletionStage that will be completed with the success or failure of the provided value
after the specified duration. |
static java.util.concurrent.CompletionStage<java.lang.Object> |
ask(ActorRef actor,
Function<ActorRef,java.lang.Object> messageFactory,
long timeoutMillis)
A variation of ask which allows to implement "replyTo" pattern by including
sender reference in message.
|
static java.util.concurrent.CompletionStage<java.lang.Object> |
ask(ActorRef actor,
Function<ActorRef,java.lang.Object> messageFactory,
Timeout timeout)
A variation of ask which allows to implement "replyTo" pattern by including
sender reference in message.
|
static java.util.concurrent.CompletionStage<java.lang.Object> |
ask(ActorRef actor,
java.lang.Object message,
long timeoutMillis)
Java API for
akka.pattern.ask :
Sends a message asynchronously and returns a CompletionStage
holding the eventual reply message; this means that the target actor
needs to send the result to the sender reference provided. |
static java.util.concurrent.CompletionStage<java.lang.Object> |
ask(ActorRef actor,
java.lang.Object message,
Timeout timeout)
Java API for
akka.pattern.ask :
Sends a message asynchronously and returns a CompletionStage
holding the eventual reply message; this means that the target actor
needs to send the result to the sender reference provided. |
static java.util.concurrent.CompletionStage<java.lang.Object> |
ask(ActorSelection selection,
Function<ActorRef,java.lang.Object> messageFactory,
long timeoutMillis)
A variation of ask which allows to implement "replyTo" pattern by including
sender reference in message.
|
static java.util.concurrent.CompletionStage<java.lang.Object> |
ask(ActorSelection selection,
java.lang.Object message,
long timeoutMillis)
Java API for
akka.pattern.ask :
Sends a message asynchronously and returns a CompletionStage
holding the eventual reply message; this means that the target ActorSelection
needs to send the result to the sender reference provided. |
static java.util.concurrent.CompletionStage<java.lang.Object> |
ask(ActorSelection selection,
java.lang.Object message,
Timeout timeout)
Java API for
akka.pattern.ask :
Sends a message asynchronously and returns a CompletionStage
holding the eventual reply message; this means that the target ActorSelection
needs to send the result to the sender reference provided. |
static java.util.concurrent.CompletionStage<java.lang.Boolean> |
gracefulStop(ActorRef target,
scala.concurrent.duration.FiniteDuration timeout)
Returns a
CompletionStage that will be completed with success (value true ) when
existing messages of the target actor has been processed and the actor has been
terminated. |
static java.util.concurrent.CompletionStage<java.lang.Boolean> |
gracefulStop(ActorRef target,
scala.concurrent.duration.FiniteDuration timeout,
java.lang.Object stopMessage)
Returns a
CompletionStage that will be completed with success (value true ) when
existing messages of the target actor has been processed and the actor has been
terminated. |
static <T> PipeToSupport.PipeableCompletionStage<T> |
pipe(java.util.concurrent.CompletionStage<T> future,
scala.concurrent.ExecutionContext context)
Register an onComplete callback on this
CompletionStage to send
the result to the given ActorRef or ActorSelection . |
public static java.util.concurrent.CompletionStage<java.lang.Object> ask(ActorRef actor, java.lang.Object message, Timeout timeout)
akka.pattern.ask
:
Sends a message asynchronously and returns a CompletionStage
holding the eventual reply message; this means that the target actor
needs to send the result to the sender
reference provided. The CompletionStage
will be completed with an AskTimeoutException
after the
given timeout has expired; this is independent from any timeout applied
while awaiting a result for this future (i.e. in
Await.result(..., timeout)
).
Warning: When using future callbacks, inside actors you need to carefully avoid closing over the containing actor’s object, i.e. do not call methods or access mutable state on the enclosing actor from within the callback. This would break the actor encapsulation and may introduce synchronization bugs and race conditions because the callback will be scheduled concurrently to the enclosing actor. Unfortunately there is not yet a way to detect these illegal accesses at compile time.
Recommended usage:
final CompletionStage<Object> f = Patterns.ask(worker, request, timeout);
f.onSuccess(new Procedure<Object>() {
public void apply(Object o) {
nextActor.tell(new EnrichedResult(request, o));
}
});
actor
- (undocumented)message
- (undocumented)timeout
- (undocumented)public static java.util.concurrent.CompletionStage<java.lang.Object> ask(ActorRef actor, Function<ActorRef,java.lang.Object> messageFactory, Timeout timeout)
final CompletionStage<Object> f = Patterns.ask(
worker,
new akka.japi.Function<ActorRef, Object> {
Object apply(ActorRef askSender) {
return new Request(askSender);
}
},
timeout);
actor
- (undocumented)messageFactory
- (undocumented)timeout
- (undocumented)public static java.util.concurrent.CompletionStage<java.lang.Object> ask(ActorRef actor, java.lang.Object message, long timeoutMillis)
akka.pattern.ask
:
Sends a message asynchronously and returns a CompletionStage
holding the eventual reply message; this means that the target actor
needs to send the result to the sender
reference provided. The CompletionStage
will be completed with an AskTimeoutException
after the
given timeout has expired; this is independent from any timeout applied
while awaiting a result for this future (i.e. in
Await.result(..., timeout)
).
Warning: When using future callbacks, inside actors you need to carefully avoid closing over the containing actor’s object, i.e. do not call methods or access mutable state on the enclosing actor from within the callback. This would break the actor encapsulation and may introduce synchronization bugs and race conditions because the callback will be scheduled concurrently to the enclosing actor. Unfortunately there is not yet a way to detect these illegal accesses at compile time.
Recommended usage:
final CompletionStage<Object> f = Patterns.ask(worker, request, timeout);
f.onSuccess(new Procedure<Object>() {
public void apply(Object o) {
nextActor.tell(new EnrichedResult(request, o));
}
});
actor
- (undocumented)message
- (undocumented)timeoutMillis
- (undocumented)public static java.util.concurrent.CompletionStage<java.lang.Object> ask(ActorRef actor, Function<ActorRef,java.lang.Object> messageFactory, long timeoutMillis)
final CompletionStage<Object> f = Patterns.ask(
worker,
new akka.japi.Function<ActorRef, Object> {
Object apply(ActorRef askSender) {
return new Request(askSender);
}
},
timeout);
actor
- (undocumented)messageFactory
- (undocumented)timeoutMillis
- (undocumented)public static java.util.concurrent.CompletionStage<java.lang.Object> ask(ActorSelection selection, java.lang.Object message, Timeout timeout)
akka.pattern.ask
:
Sends a message asynchronously and returns a CompletionStage
holding the eventual reply message; this means that the target ActorSelection
needs to send the result to the sender
reference provided. The CompletionStage
will be completed with an AskTimeoutException
after the
given timeout has expired; this is independent from any timeout applied
while awaiting a result for this future (i.e. in
Await.result(..., timeout)
).
Warning: When using future callbacks, inside actors you need to carefully avoid closing over the containing actor’s object, i.e. do not call methods or access mutable state on the enclosing actor from within the callback. This would break the actor encapsulation and may introduce synchronization bugs and race conditions because the callback will be scheduled concurrently to the enclosing actor. Unfortunately there is not yet a way to detect these illegal accesses at compile time.
Recommended usage:
final CompletionStage<Object> f = Patterns.ask(selection, request, timeout);
f.onSuccess(new Procedure<Object>() {
public void apply(Object o) {
nextActor.tell(new EnrichedResult(request, o));
}
});
selection
- (undocumented)message
- (undocumented)timeout
- (undocumented)public static java.util.concurrent.CompletionStage<java.lang.Object> ask(ActorSelection selection, java.lang.Object message, long timeoutMillis)
akka.pattern.ask
:
Sends a message asynchronously and returns a CompletionStage
holding the eventual reply message; this means that the target ActorSelection
needs to send the result to the sender
reference provided. The CompletionStage
will be completed with an AskTimeoutException
after the
given timeout has expired; this is independent from any timeout applied
while awaiting a result for this future (i.e. in
Await.result(..., timeout)
).
Warning: When using future callbacks, inside actors you need to carefully avoid closing over the containing actor’s object, i.e. do not call methods or access mutable state on the enclosing actor from within the callback. This would break the actor encapsulation and may introduce synchronization bugs and race conditions because the callback will be scheduled concurrently to the enclosing actor. Unfortunately there is not yet a way to detect these illegal accesses at compile time.
Recommended usage:
final CompletionStage<Object> f = Patterns.ask(selection, request, timeout);
f.onSuccess(new Procedure<Object>() {
public void apply(Object o) {
nextActor.tell(new EnrichedResult(request, o));
}
});
selection
- (undocumented)message
- (undocumented)timeoutMillis
- (undocumented)public static java.util.concurrent.CompletionStage<java.lang.Object> ask(ActorSelection selection, Function<ActorRef,java.lang.Object> messageFactory, long timeoutMillis)
final CompletionStage<Object> f = Patterns.ask(
selection,
new akka.japi.Function<ActorRef, Object> {
Object apply(ActorRef askSender) {
return new Request(askSender);
}
},
timeout);
selection
- (undocumented)messageFactory
- (undocumented)timeoutMillis
- (undocumented)public static <T> PipeToSupport.PipeableCompletionStage<T> pipe(java.util.concurrent.CompletionStage<T> future, scala.concurrent.ExecutionContext context)
CompletionStage
to send
the result to the given ActorRef
or ActorSelection
.
Returns the original CompletionStage to allow method chaining.
If the future was completed with failure it is sent as a Status.Failure
to the recipient.
Recommended usage example:
final CompletionStage<Object> f = Patterns.ask(worker, request, timeout);
// apply some transformation (i.e. enrich with request info)
final CompletionStage<Object> transformed = f.map(new akka.japi.Function<Object, Object>() { ... });
// send it on to the next stage
Patterns.pipe(transformed).to(nextActor);
future
- (undocumented)context
- (undocumented)public static java.util.concurrent.CompletionStage<java.lang.Boolean> gracefulStop(ActorRef target, scala.concurrent.duration.FiniteDuration timeout)
CompletionStage
that will be completed with success (value true
) when
existing messages of the target actor has been processed and the actor has been
terminated.
Useful when you need to wait for termination or compose ordered termination of several actors.
If the target actor isn't terminated within the timeout the CompletionStage
is completed with failure AskTimeoutException
.
target
- (undocumented)timeout
- (undocumented)public static java.util.concurrent.CompletionStage<java.lang.Boolean> gracefulStop(ActorRef target, scala.concurrent.duration.FiniteDuration timeout, java.lang.Object stopMessage)
CompletionStage
that will be completed with success (value true
) when
existing messages of the target actor has been processed and the actor has been
terminated.
Useful when you need to wait for termination or compose ordered termination of several actors.
If you want to invoke specialized stopping logic on your target actor instead of PoisonPill, you can pass your
stop command as stopMessage
parameter
If the target actor isn't terminated within the timeout the CompletionStage
is completed with failure AskTimeoutException
.
target
- (undocumented)timeout
- (undocumented)stopMessage
- (undocumented)public static <T> java.util.concurrent.CompletionStage<T> after(scala.concurrent.duration.FiniteDuration duration, Scheduler scheduler, scala.concurrent.ExecutionContext context, java.util.concurrent.Callable<java.util.concurrent.CompletionStage<T>> value)
CompletionStage
that will be completed with the success or failure of the provided Callable
after the specified duration.duration
- (undocumented)scheduler
- (undocumented)context
- (undocumented)value
- (undocumented)public static <T> java.util.concurrent.CompletionStage<T> after(scala.concurrent.duration.FiniteDuration duration, Scheduler scheduler, scala.concurrent.ExecutionContext context, java.util.concurrent.CompletionStage<T> value)
CompletionStage
that will be completed with the success or failure of the provided value
after the specified duration.duration
- (undocumented)scheduler
- (undocumented)context
- (undocumented)value
- (undocumented)