作者 Eaton
导语
日常开发中,除了基础的服务管理功能,有时我们还需要进行一些特殊的业务相关的服务管理,比如清除服务缓存,改变服务的模式、停用服务某个接口等。由于这些需求和业务耦合性较高,框架层面一般不会提供这样的功能,开发者甚至需要自己开发额外接口来实现。为了解决这一问题,TARS 在框架层面提供了自定义命令的功能。
TARS 自定义命令简介
TARS 自定义命令功能用于实现除框架对服务的基础管理以外的服务管理功能。开发者能够添加自定义命令并实现命令的逻辑,并通过 TarsWeb 管理页面来向服务发送命令,触发自定义命令的逻辑。
TARS 服务框架中也通过自定义命令的方式,内置了以下八种命令:
tars.help # 查看所有管理命令
tars.loadconfig # 从配置中心, 拉取配置下来: tars.loadconfig filename
tars.setloglevel # 设置滚动日志的等级: tars.setloglevel [NONE, ERROR, WARN, DEBUG]
tars.viewstatus # 查看服务状态
tars.connection # 查看当前链接情况
tars.loadproperty # 使配置文件的 property 信息生效
tars.setdyeing # 设置染色信息 tars.setdyeing key servant [interface]
以 tars.setloglevel
为例,我们想要修改某个服务的日志等级为 ERROR
,打开服务的管理页面,点击 更多命令
,如下
在弹出窗口中选中自定义命令,输入命令 tars.setloglevel ERROR
,并点击 确定
点击 确定
后,会弹出提示框,提示命令执行结果,如下图,我们成功设置了日志等级。
接下来,我们介绍用户添加全新自定义命令的方法。
添加自定义命令
本部分将以 TarsCpp 应用为例,介绍如何在服务中添加自定义命令。这里我们通过以下命令创建一个服务名为 CommandDemo.DemoServer.DemoObj
的服务,后面将以该服务为例子介绍如何使用自定义命令。
/usr/local/tars/cpp/script/cmake_tars_server.sh CommandDemo DemoServer Demo
项目结构如下
DemoServer
├── build # 构建目录
├── CMakeLists.txt # cmake 构建文件
└── src # 源文件目录
├── CMakeLists.txt
├── Demo.h # Demo.tars 生成文件
├── DemoImp.cpp # 接口实现文件
├── DemoImp.h # 接口实现头文件
├── DemoServer.cpp # 服务实现文件
├── DemoServer.h # 服务实现头文件
└── Demo.tars # tars 接口定义文件
关于 TARS 服务的创建与部署,参考文档 TARS 服务开发入门,本文不再赘述。
添加全新自定义命令的方法分两步:
- 实现自定义命令响应函数
- 将响应函数与自定义命令绑定
实现自定义命令响应函数
在这一部分中,我们将尝试创建并实现一个自定义命令。
首先,我们在服务实现头文件 DemoServer.h
中,添加自定义命令函数的声明
bool testCommand<