Skip to content

Instantly share code, notes, and snippets.

@adampresley
Created June 14, 2023 20:44
Show Gist options
  • Select an option

  • Save adampresley/7ee943696cf6247cbd168876bf77acf6 to your computer and use it in GitHub Desktop.

Select an option

Save adampresley/7ee943696cf6247cbd168876bf77acf6 to your computer and use it in GitHub Desktop.
Work Ticker - workticker-part3.go
wp.logger.Infof("starting work ticker '%s'...", wp.name)
wg := sync.WaitGroup{}
for i := 0; i < wp.numWorkers; i++ {
wg.Add(1)
go func(workerID int) {
wp.logger.Infof("[%s] starting worker %d", wp.name, workerID)
defer wg.Done()
for {
select {
case <-ctx.Done():
wp.logger.Infof("[%s] closing worker %d...", wp.name, workerID)
break
case workItem := <-wp.workChan:
wp.logger.WithFields(logrus.Fields{
"workerID": workerID,
}).Infof("[%s] received work item. calling handler...", wp.name)
var err error
if err = workItem.Handler(workerID, workItem.Data, wp.limiter); err != nil {
if wp.workChan != nil {
wp.workErrorChan <- HandleWorkError[T]{
ErrorMessage: err.Error(),
WorkerID: workerID,
Data: workItem.Data,
WorkTickerName: wp.name,
}
}
}
}
}
}(i)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment