job.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package server
  2. import (
  3. "context"
  4. "sync"
  5. "github.com/go-nunu/nunu-layout-advanced/internal/job"
  6. "github.com/go-nunu/nunu-layout-advanced/pkg/log"
  7. "go.uber.org/zap"
  8. )
  9. type JobServer struct {
  10. log *log.Logger
  11. userJob job.UserJob
  12. whitelistJob job.WhitelistJob
  13. wg sync.WaitGroup
  14. }
  15. func NewJobServer(
  16. log *log.Logger,
  17. userJob job.UserJob,
  18. whitelistJob job.WhitelistJob,
  19. ) *JobServer {
  20. return &JobServer{
  21. log: log,
  22. userJob: userJob,
  23. whitelistJob: whitelistJob,
  24. }
  25. }
  26. func (j *JobServer) Start(ctx context.Context) error {
  27. j.log.Info("job server starting...")
  28. // 启动 UserJob 的消费者
  29. //j.wg.Add(1)
  30. //go func() {
  31. // defer j.wg.Done()
  32. // j.userJob.RegisterConsumer(ctx)
  33. //}()
  34. // 启动 WhitelistJob 的消费者
  35. j.wg.Add(1)
  36. go func() {
  37. defer func() {
  38. if r := recover(); r != nil {
  39. j.log.Error("whitelistJob consumer panic", zap.Any("error", r))
  40. }
  41. j.wg.Done()
  42. }()
  43. j.whitelistJob.DomainConsumer(ctx)
  44. }()
  45. j.wg.Wait()
  46. return nil
  47. }
  48. func (j *JobServer) Stop(ctx context.Context) error {
  49. return nil
  50. }