Class GracefulStopSupport
GracefulStop extensions.
Inherited Members
Namespace: Akka.Actor
Assembly: Akka.dll
Syntax
public static class GracefulStopSupport
Methods
| Improve this Doc View SourceGracefulStop(IActorRef, TimeSpan)
Returns a Task that will be completed with success when existing messages of the target actor have been processed and the actor has been terminated.
Useful when you need to wait for termination or compose ordered termination of several actors, which should only be done outside of the ActorSystem as blocking inside ActorBase is discouraged.
IMPORTANT:
the actor being terminated and its supervisor being informed of the availability of the deceased actor's name
are two distinct operations, which do not obey any reliable ordering.If the target actor isn't terminated within the timeout the Task is completed with failure.
If you want to invoke specialized stopping logic on your target actor instead of PoisonPill, you can pass your stop command as a parameter:
GracefulStop(someChild, timeout, MyStopGracefullyMessage).ContinueWith(r => {
// Do something after someChild starts being stopped.
});
Declaration
public static Task<bool> GracefulStop(this IActorRef target, TimeSpan timeout)
Parameters
Type | Name | Description |
---|---|---|
IActorRef | target | The actor to be terminated. |
TimeSpan | timeout | The amount of time we're going to wait for the actor to terminate. |
Returns
Type | Description |
---|---|
Task<Boolean> | A Task that will return |
GracefulStop(IActorRef, TimeSpan, Object)
Returns a Task that will be completed with success when existing messages of the target actor have been processed and the actor has been terminated.
Useful when you need to wait for termination or compose ordered termination of several actors, which should only be done outside of the ActorSystem as blocking inside ActorBase is discouraged.
IMPORTANT:
the actor being terminated and its supervisor being informed of the availability of the deceased actor's name
are two distinct operations, which do not obey any reliable ordering.If the target actor isn't terminated within the timeout the Task is completed with failure.
If you want to invoke specialized stopping logic on your target actor instead of PoisonPill, you can pass your stop command as a parameter:
GracefulStop(someChild, timeout, MyStopGracefullyMessage).ContinueWith(r => {
// Do something after someChild starts being stopped.
});
Declaration
public static async Task<bool> GracefulStop(this IActorRef target, TimeSpan timeout, object stopMessage)
Parameters
Type | Name | Description |
---|---|---|
IActorRef | target | The actor to be terminated. |
TimeSpan | timeout | The amount of time we're going to wait for the actor to terminate. |
Object | stopMessage | A custom message to use to shutdown target - by default the other overload uses PoisonPill. |
Returns
Type | Description |
---|---|
Task<Boolean> | A Task that will return |
Exceptions
Type | Condition |
---|---|
TaskCanceledException | This exception is thrown if the underlying task is Canceled. |