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

51 lines
1.0 KiB
Go

package service
import (
"context"
"time"
"bash_go_service/config-loader/pkg/manager"
"bash_go_service/shared/pkg/constants"
"bash_go_service/shared/pkg/logger"
)
// ConfigManagerTask 配置管理器任务
type ConfigManagerTask struct {
manager *manager.ConfigManager
}
func NewConfigManagerTask() *ConfigManagerTask {
return &ConfigManagerTask{
manager: manager.NewConfigManager(constants.ConfigFile, 5*time.Second),
}
}
func (t *ConfigManagerTask) Execute(ctx context.Context) {
// 初始化配置管理器
if err := t.manager.Initialize(); err != nil {
logger.Error("Failed to initialize config manager: %v", err)
return
}
// 启动配置监控
t.manager.StartWatching()
// 等待上下文取消
<-ctx.Done()
// 停止配置管理器
t.manager.Stop()
// 清理共享内存
if err := t.manager.ClearSharedMemory(); err != nil {
logger.Error("Failed to clear shared memory: %v", err)
}
logger.Info("Config manager task stopped")
}
func (t *ConfigManagerTask) Name() string {
return "ConfigManagerTask"
}