自定义 Service
- 标准的
async start()
接口,用户可以异步的启动 Node.js 程序。 - 结构化的日志管理、配置能力。
- 进程内的启动顺序(依赖关系)管理。
- 一般用户可以通过
require('dorapan').getService(serviceName)
获得。 - Service 构造器中传入的 ServiceContext 亦有此方法。
Process 在 procfile.js 中进行定义,依靠如下语法:
上面的 pandora. service('serviceName', './service.js')
表示定义一个名字叫 serviceName
的 Service,并定义该 Service 的实现在 ./service.js
。
第二个参数除了传递一个相对路境外,也可以直接传递一个实现类的引用。最终,该语句会返回一个对象 。
我们可以通过 ServiceRepresentationChainModifier 完善对这个 Service 的定义。
下面通过一个简单的例子介绍全部的定义能力:
service().process(processName: string)
里面的 processName
可以有如下的取值:
- 某个已经定义了的进程名。
- ‘all’,全部定义了的进程。(会激活全部定义的进程,包括内置的默认定义,不建议使用)
每个 Service 都是一个 Class,这个 Class 需要实现 0 个必选接口,和 4 个可选接口。
new (context: )
start(): Promise<void> | void
可选,生命周期方法,启动服务。
stop?(): Promise<void> | void
静态属性、方法约束为:
dependencies: string[]
这个上面有不少的属性和方法,具体参考 API。下面介绍几个常用的:
主要的属性
serviceName: string
config: any
针对 Service 的配置,可以在 中给定。
dependencies: { [depName: string]: Service }
logger: ServiceLogger
你可以直接 new 你的实现类编写单元测试。