Skip to main content

Lifecycle system messages

Proto.Actor emits a predictable sequence of lifecycle messages so actors can initialise, recover, and shut down cleanly. The sections below summarise each notification and link to deeper guides where available.

PoisonPill

PoisonPill is a user-level message that queues a graceful shutdown once all pending user work has been processed. See the dedicated guide for a walk-through.

Restart

Restart is dispatched right before an actor instance is replaced during supervision. It gives middleware a chance to clear per-instance state that would otherwise leak across restarts.

Restarting

Restarting indicates the actor has begun its restart cycle but has not yet processed new user messages. This is a good place to rehydrate transient state before work resumes.

Started

Started fires once after an actor is created so initialisation logic can run. Typical uses include seeding behaviour stacks or requesting resources.

Stop

Stop is the user-facing command that asks the system to terminate an actor. It can be sent explicitly or triggered by helpers such as RootContext.StopAsync.

Stopping

Stopping is emitted after a stop has been requested but before the mailbox drains. Use it to flush metrics or cancel background work while user messages are no longer accepted.

Stopped

Stopped confirms that the actor has completed shutdown. Children have been stopped, resources released, and watchers will soon see Terminated.

Terminated

Terminated is delivered to watchers when the observed actor stops for any reason (normal exit, failure, or kill). Watchers often use it to restart dependencies or escalate failures.