请问,egg启动后应该在何时启动只需执行一次的函数?比如开启本地的RPC监听。项目当前的写法是在agent.js在agent.messenger.on('egg-ready')后通知app.js启动某些service,如下代码
`
agent.messenger.on('egg-ready', () => {
agent.messenger.sendToApp('init',{});
});
app.messenger.on('init', data => {
const ctx = app.createAnonymousContext();
ctx.service.kafkaService.initListener();
});
`
但是感觉这种写法有些不伦不类,请问标准的做法应该是怎样的? app中是否有类似于app.on('egg-ready')的回调可以用来启动这些内部监听?谢谢
有 app.messenger.on('egg-ready'
但别忘了, app 就是 worker,它是 cluster 多进程的,必然会执行多次,除非你在 agent 里面随机通知一个。这类事情本来就是 agent 的职责。
发自我的 iPhone
在 2017年11月25日,14:15,leiyanggz notifications@github.com 写道:
agent.messenger.on('egg-ready'
@atian25 谢谢, 仍有几个疑问
这类问题是使用这种方式解决的 https://eggjs.org/zh-cn/advanced/cluster-client.html
egg-schedule可以在程序启动时只执行一次。https://github.com/eggjs/egg-schedule/commit/69a588e5ffbb5a01ed3084bfb9f6c2a792963db4
Most helpful comment
egg-schedule可以在程序启动时只执行一次。https://github.com/eggjs/egg-schedule/commit/69a588e5ffbb5a01ed3084bfb9f6c2a792963db4