You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

67 lines
1.6 KiB

package main
import (
"yunyan/lego"
"yunyan/modules/timer"
"yunyan/services"
"flag"
"fmt"
"yunyan/lego/base/rpcx"
"yunyan/lego/core"
"yunyan/lego/sys/cron"
"yunyan/lego/sys/log"
redissys "yunyan/lego/sys/redis"
)
/*
服务类型:定时任务服务
*/
var (
conf = flag.String("conf", "./conf/timer.yaml", "获取需要启动的服务配置文件") //启动服务的Id
)
func main() {
flag.Parse()
s := NewService(
rpcx.SetConfPath(*conf),
rpcx.SetVersion("1.0.0.0"),
)
// timer 为定时任务服务,不接收网关 HTTP 路由(模块内无 IUserSession 处理函数),
// 因此不装 NewHttpRouteComp —— 否则 SCompHttpRoute.Init 会把本服务强转为 comm.IService
// 而 *Service 未实现 GetUserSession/PutUserSession,启动即 panic。与 gateway/mcp 一致。
s.OnInstallComp() //装备组件(无)
lego.Run(s, //运行模块
timer.NewModule(),
)
}
func NewService(ops ...rpcx.Option) core.IService {
s := new(Service)
s.Configure(ops...)
return s
}
// worker 的服务对象定义
type Service struct {
services.ServiceBase
}
// 初始化worker需要的一些系统工具
func (this *Service) InitSys() {
this.ServiceBase.InitSys()
//定时驱动
if err := cron.OnInit(this.GetSettings().Sys["cron"]); err != nil {
panic(fmt.Sprintf("init sys.cron err: %s", err.Error()))
} else {
log.Infof("init sys.cron success!")
}
//Redis(timer 仅用到 Redis)
if err := redissys.OnInit(this.GetSettings().Sys["redis"]); err != nil {
panic(fmt.Sprintf("init sys.redis err: %s", err.Error()))
} else {
log.Infof("init sys.redis success!")
}
}