Files
SEEN/backend/internal/workers/manager.go
T
2026-04-10 12:06:24 +02:00

34 lines
645 B
Go

package workers
import (
"context"
"go.uber.org/zap"
)
type Worker interface {
Name() string
Start(ctx context.Context) error
}
type Manager struct {
workers []Worker
log *zap.Logger
}
func NewManager(log *zap.Logger, workers ...Worker) *Manager {
return &Manager{workers: workers, log: log}
}
func (m *Manager) Start(ctx context.Context) {
for _, worker := range m.workers {
worker := worker
go func() {
m.log.Info("starting worker", zap.String("worker", worker.Name()))
if err := worker.Start(ctx); err != nil {
m.log.Error("worker stopped", zap.String("worker", worker.Name()), zap.Error(err))
}
}()
}
}