README ¶
ServiceLifecycle
ServiceLifecycle is the interface to the service life cycle management subsystem. The ServiceLifecycle tracks the Service life cycle, listens to the signal of the process for graceful exit.
Concept
Service
Service is the interface for ServiceLifecycle to manage. The component that plans to use ServiceLifecycle needs to implement the interface.
// Service is the interface for ServiceLifecycle to manage.
type Service interface {
// Name defines the unique identifier of the service, which cannot be repeated
// globally.
Name() string
// Start the service, for resource application, start background coroutine and
// other startup operations.
//
// The Start method should be used in non-block way, for example, a blocked
// listening socket should open a goroutine separately internally.
Start(ctx context.Context) error
// Stop the service, close the goroutines inside the service, recycle resources,
// and ensure the graceful launch of the service.
Stop(ctx context.Context) error
}
Example
ctx := context.Background()
svcLifecycle.RegisterServices(service...)
// blocks the svcLifecycle for waiting signals to shut down the process
svcLifecycle.Signals(syscall.SIGINT, syscall.SIGTERM ...).Init(ctx).StartServices(ctx).Wait(ctx)
Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Lifecycle ¶
type Lifecycle interface { // RegisterServices registers service to ServiceLifecycle for managing. RegisterServices(modular ...Service) // StartServices starts all registered services by calling Service.Start // method. StartServices(ctx context.Context) Lifecycle // StopServices stops all registered services by calling Service.Stop // method. StopServices(ctx context.Context) // Signals listens the system signals for gracefully stop the registered // services. Signals(sigs ...os.Signal) Lifecycle // Wait waits the signal for stopping the ServiceLifecycle, before stopping // the ServiceLifecycle will call StopServices stops all registered services. Wait(ctx context.Context) }
Lifecycle is the interface to the service life cycle management subsystem. The ServiceLifecycle tracks the Service life cycle, listens to the signal of the process for graceful exit.
All managed services must first call RegisterServices to register with ServiceLifecycle.
type Service ¶
type Service interface { // Name describe service name Name() string // Start a service, this method should be used in non-block form Start(ctx context.Context) error // Stop a service, this method should be used in non-block form Stop(ctx context.Context) error }
Service provides abstract methods to control the lifecycle of a service