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
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!")
|
|
}
|
|
|
|
}
|
|
|