manage worker in golang, provide start, stop, pname method for worker.
wmanager add trycatch wrapper for each worker.
type Worker interface {
Start() // block mode
Stop() // only call worker ctx cancel
Pname() string // worker process name
Status() int // worker status
}
wm = wmanager.NewWorkerManager()
// server
wm.AddWorker(master.NewAPIServer(ctx))
wm.AddWorker(master.NewServer(ctx))
// worker
wm.AddWorker(master.NewHrkeScheduler(ctx))
wm.AddWorker(master.NewCollector(ctx))
wm.Start()
wm.Stop()
wm.Stop()
wm.Wait()
or
wm.WaitTimeout(N)