bash_go_service/backend-service/pkg/service/welcome.go

57 lines
1.2 KiB
Go

package service
import (
"context"
"os"
"os/signal"
"syscall"
"bash_go_service/shared/pkg/logger"
"bash_go_service/welcome/service"
)
// WelcomeTask 欢迎服务任务
type WelcomeTask struct {
service *welcome.Service
}
// NewWelcomeTask 创建欢迎服务任务实例
func NewWelcomeTask() *WelcomeTask {
return &WelcomeTask{}
}
// Execute 执行任务
func (t *WelcomeTask) Execute(ctx context.Context) {
// 初始化logger
// 创建welcome service
service, err := welcome.NewService()
if err != nil {
logger.Error("Failed to create welcome service:", err)
return
}
t.service = service
defer t.service.Stop()
// 启动服务
if err := t.service.Start(); err != nil {
logger.Error("Failed to start welcome service:", err)
return
}
// 等待上下文取消或中断信号
sigChan := make(chan os.Signal, 1)
signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
select {
case <-ctx.Done():
logger.Info("Context cancelled, shutting down welcome service...")
case sig := <-sigChan:
logger.Info("Received signal %v, shutting down welcome service...", sig)
}
}
// Name 返回任务名称
func (t *WelcomeTask) Name() string {
return "WelcomeTask"
}