脚手架

mqant以模块化来组织代码模块,模块概念在框架中非常重要,以下教程将详细讲解模块的生命周期和用法

模块

模块定义

结构体只要实现了以上几个函数就被认为是一个模块

//指定一个模块的名称,非常重要,在配置文件和RPC路由中会频繁使用
func GetType() string   

//指定模块的版本
func Version() string   

//模块的初始化函数,当框架初始化模块是会主动调用该方法
func OnInit(app module.App, settings *conf.ModuleSettings) 

//当App解析配置后调用,这个接口不管这个模块是否在这个进程的模块分组中都会调用
func OnAppConfigurationLoaded(app module.App)

//模块独立运行函数,框架初始化模块以后会以单独goroutine运行该函数,并且提供一个关闭信号,以再框架要停止模块时通知
func Run(closeSig chan bool) 

//当模块停止运行后框架会调用该方法,让模块做一些回收操作
func OnDestroy()

模块生命周期

alt mqant模块生命周期

模块使用

通常我们不止是实现一个简单模块,还需要利用框架的其他高级特性,因此我们通常会继承框架封装好的一些基础模块

  • RPCModule

    继承 basemodule.BaseModule该模块封装了mqant的RPC通信相关方法

  • GateModule

    继承 basegate.Gate该模块封装了tcp/websocket+mqtt协议的长连接网关

不在进程分组中的模块如何初始化?

func (self *HellWorld) OnAppConfigurationLoaded(app module.App) {
    //当App初始化时调用,这个接口不管这个模块是否在这个进程运行都会调用
    self.BaseModule.OnAppConfigurationLoaded(app)
}

Copyright © 梁大帅 2020 all right reserved,powered by Gitbook该文件修订时间: 2020-05-05 18:12:53

results matching ""

    No results matching ""