Open cupen opened 2 years ago
你在全局加一个waitgroup,各模块完毕后-1,主协程这里等waigroup不就OK了…
你在全局加一个waitgroup,各模块完毕后-1,主协程这里等waigroup不就OK了…
…… 得先有每个 module 的 启动后
这一事件,才能 wg -1。
目前的 Module 有以下几个阶段可以插入代码,哪个可以当作 “启动后”?
具体点说,就是 Module 接口需要加一个 OnStarted
,用于执行“启动后” 的逻辑。
https://github.com/name5566/leaf/blob/af71eb082cdae578efb15f7e091afa8bd78410e0/module/module.go#L10-L14
这个 “启动后” ,需要在 cluster.Init()
之后执行,因为这之后才能对外宣布“本服务已就绪“。
https://github.com/name5566/leaf/blob/af71eb082cdae578efb15f7e091afa8bd78410e0/leaf.go#L24-L36
再不济实现个 leaf.Start
,执行完启动过程后不要阻塞,让我能在之后执行代码就行。
如果 leaf 未来要实现 cluster 模块,服务发现机制是必要的,这就需要预留出 启动后
的执行代码 。
@name5566
这框架太久没维护了,你直接fork修改呗( ̄▽ ̄")
我记得原版模块是顺序启动的,理论上你可以单独加一个模块放在最后面,专门用来注册/取消注册到注册中心
我有个游戏项目用了 leaf ,另加了分布式通信层和服务发现机制,需要在进程里的服务(module)全部就绪后注册到外部服务。但因为在
OnInit
阶段服务还没有全部启动完毕,所以目前我是这样做的:这样可行,但比较看脸(实际启动时间会变的,比如又加了新功能),不太好用。 故而有点新想法,比如 module 可否有个启动后的
OnXXX
调用? 延伸一下,甚至可以细分为几个阶段:启动前、启动后、停止前、停止后。以上个人愚见,欢迎讨论。