/wmanager

golang worker manager

Primary LanguageGo

wmanager

manage worker in golang, provide start, stop, pname method for worker.

wmanager add trycatch wrapper for each worker.

Usage

1. Your method implements this interface

type Worker interface {
    Start()        // block mode
    Stop()         // only call worker ctx cancel
    Pname() string // worker process name
    Status() int   // worker status
}

2. new woker manager, add worker

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))

3. start workers

wm.Start()

4. stop workers

wm.Stop()

5. stop workers

wm.Stop()

6. wait for all worker exit

wm.Wait()

or

wm.WaitTimeout(N)