Coordinated Shutdown
GoAkt provides a mechanism to execute user-defined tasks during the shutdown of the actor system. One can use the option WithCoordinatedShutdown when creating the actor system. 
Tasks are executed in the order they were registered. If a task fails, the shutdown process will continue uninterrupted. The actor system proceeds with its shutdown sequence, and any errors from the shutdown hooks will be reported at the end. In a future release, we may introduce an option to abort the shutdown entirely—triggering a panic—if any user-defined task fails.
Get Started
Before using the WithCoordinatedShutdown option one must implement the ShutdownHook interface:
type ShutdownHook interface {
    // Execute runs the shutdown logic for this hook.
    //
    // Parameters:
    //   - ctx:         The context for cancellation and deadlines.
    //   - actorSystem: The ActorSystem being shut down.
    //
    // Returns:
    //   - error: An error if the shutdown logic fails, or nil on success.
    Execute(ctx context.Context, actorSystem ActorSystem) error
    
    // Recovery returns the ShutdownHookRecovery configuration for this hook.
    //
    // This determines how failures are handled, including retry and recovery strategies.
    //
    // Returns:
    //   - *ShutdownHookRecovery: The recovery configuration for this hook.
    Recovery() *ShutdownHookRecovery
}Recovery Strategies
Every ShutdownHook must define a recovery strategy that determines how to handle errors
returned by its Execute method. The following strategies are available:
- ShouldFail: indicates that if a - ShutdownHookfails, the shutdown process should immediately stop executing any remaining hooks.
- ShouldRetryAndFail: indicates that if a - ShutdownHookfails, the system should retry executing the hook. The shutdown process will pause and repeatedly attempt the failed hook until it succeeds or a maximum retry limit is reached. If the hook still fails after all retries, the error is reported and no further hooks are executed.
- ShouldSkip: indicates that if a - ShutdownHookfails, the error should be reported, but the shutdown process should skip the failed hook and continue executing the remaining hooks.
- ShouldRetryAndSkip: indicates that if a - ShutdownHookfails, the system should retry executing the hook. The shutdown process will pause and repeatedly attempt the failed hook until it succeeds or a maximum retry limit is reached. If the hook still fails after all retries, the error is reported, but the shutdown process continues with the remaining hooks.
To define a recovery strategy for a ShutdownHook, use:
NewShutdownHookRecovery(opts ...RecoveryOption) *ShutdownHookRecoveryPass the appropriate RecoveryOption to configure the desired behaviour.
Last updated