@@ -41,7 +41,7 @@ func run(ctx context.Context) error {
4141- [ Process start and shutdown] ( #process-start-and-shutdown )
4242- [ Restart] ( #restart )
4343- [ HTTP Server] ( #http-server )
44- - [ Dependency Manager] ( #dependency- manager )
44+ - [ Manager] ( #manager )
4545
4646### Process start and shutdown
4747
@@ -96,38 +96,36 @@ func main() {
9696}
9797```
9898
99- ### Dependency Manager
99+ ### Manager
100100
101- The ` Manager ` runnable starts and stops all runnables while respecting the dependency between them.
102- Components with dependencies will be stopped before their dependencies.
101+ The ` Manager ` groups runnables into two tiers: ** processes** (foreground work) and ** services** (infrastructure).
102+ Shutdown is triggered when the context is cancelled or any runnable completes.
103+ During shutdown, processes are stopped first, then services — ensuring services remain available while processes drain.
103104
104- Example with three components:
105105``` go
106- g := runnable.NewManager ()
107- g.Add (jobQueue)
108- g.Add (httpServer, jobQueue) // jobs is a dependency
109- g.Add (monitor)
106+ g := runnable.Manager ()
107+ g.RegisterService (jobQueue)
108+ g.Register (httpServer)
109+ g.Register (monitor)
110110
111- runnable.Run (g. Build () )
111+ runnable.Run (g)
112112```
113113
114114<details >
115115 <summary markdown =" span " >Logs of a demo app</summary >
116116
117117``` shell
118- $ go run ./examples/example
119- level=INFO msg=started runnable=manager/JobQueue
118+ $ go run ./examples/example/
119+ level=INFO msg=started runnable=manager/StupidJobQueue
120120level=INFO msg=started runnable=manager/httpserver
121- level=INFO msg=started runnable=manager/Monitor
121+ level=INFO msg=started runnable=manager/every-3s/RunnableFunc
122122...
123- ^Clevel=INFO msg=" received signal" runnable=signal/manager signal=interrupt
123+ ^C
124+ level=INFO msg=" signal received" runnable=signal signal=interrupt
124125level=INFO msg=" starting shutdown" runnable=manager reason=" context cancelled"
125- level=INFO msg=cancelled runnable=manager/httpserver
126- level=INFO msg=cancelled runnable=manager/Monitor
127- level=INFO msg=stopped runnable=manager/Monitor
128126level=INFO msg=stopped runnable=manager/httpserver
129- level=INFO msg=cancelled runnable=manager/JobQueue
130- level=INFO msg=stopped runnable=manager/JobQueue
127+ level=INFO msg=stopped runnable=manager/every-3s/RunnableFunc
128+ level=INFO msg=stopped runnable=manager/StupidJobQueue
131129level=INFO msg=" shutdown complete" runnable=manager
132130```
133131
0 commit comments