57 lines
1.2 KiB
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"
|
|
}
|