golang CoPilot开发
调用其他语言编写的CoPilot
go-copilot开发
在NJET中需要启动Go 开发的外部二进制程序时,可以通过加载NJET提供的 njt_helper_go_copilot_module 模块,并指定外部go二进制程序使用的配置文件。
njt_helper_go_copilot_module 将解析Toml格式文件,并获取配置文件中设置的可执行文件路径,如果是相对路径,将添加$NJT_PREFIX 前缀,该前缀通过启动NJET 时使用 -p 方式传入,默认值是编译时传入的 –prefix, rpm/deb安装时该路径是 /usr/local/njet。
njt_helper_go_copilot_module 获取到文件路径后,将通过 njt_execute 启动并执行对应的外部文件。
通过ps 查看时,将看到copilot 进程是启动的go 外部程序的父进程。
Go copilot 配置文件中如果可执行文件名没有配置, 将不启动对应的go copilot, 且不会重试,需要提供正确配置后再重启NJET。
NJET配置
使用 helper 指令加载NJET 提供的 njt_helper_go_copilot_module 模块,并提供配置文件,例如:
helper goProgName /usr/local/njet/modules/njt_helper_go_copilot_module.so conf/go_prog_config.toml;
Go copilot 规范
命令行参数
需要能够解析以下两个参数
-p prefix (NJET 实例的 prefix 路径)
-c full_conf_name (完整路径的配置文件名)
配置文件
配置文件使用TOML格式,Toml 中需要有 copilot 配置项:
- copilotType
copilot 类型,控制面提供的配置修改api 将根据这个字段用对应的lua 逻辑进行处理
- progName
progName 是copilot 需要启动的外部go 可执行文件名
progName 可以是绝对路径或相对路径
相对路径的话,启动 prog 时,需要加上 NJET 的 prefix
可选的配置项:
- stdoutFile
通过go copilot 启动后标准输出的重定向文件,不配置的时候使用 /dev/null
- stderrFile
通过go copilot 启动后标准错误的重定向文件,不配置的时候使用 /dev/null
Toml 中的其它配置项由具体的go 程序解析及使用
[copilot]
progName="sbin/registry-sync"
copilotType="regsync"
stdoutFile="logs/regsync_out.log"
stderrFile="logs/regsync_err.log