07 Реестр и рабочее пространство
Рабочие пространства (workspace)
В запросах к сервису всегда указывается, в какое рабочее пространство они обращаются. При запуске сервиса можно указать, какие workspace они будут обслуживать.
async start() {
...
//Этот сервис будет доступен только в пространстве myWS
this.workspace = "myWS"
}
Если workspace не указан, то такой сервис будет считатся универсальным. В универсальный сервис приходят запросы со всех workspace, за исключением если развернут одноименный сервис с указанным workspace. Сервис может быть в пространстве common, если его логика не делит запросы на разные пространства
Установка реестра
npm i ./corelibs/registry
В index.js:
import {Registry} from '@morphcluster/registry'
...
host.addService(new Registry(host))
Схема реестра
Реестр позволяет сервисам публиковать схему(шаблон), для удобства изменения этих настроек с админ-панели. Схема реестра задается в формате json-schema, которая получается после объединения схем реестра всех сервисов.
const registrySchema = {
"type": "object",
"properties": {
"test": {
"type": "object",
"properties": {
"hello": {
"type": "string"
}
}
}
}
...
async start() {
await super.start()
//После этого запроса Реестр запомнит, какие настроийки нужны этому сервису
await this.Registry.mergeSchema({schema:registrySchema},"common")
}
В примере для этого сервиса в реестре можно будет задать, например такую настройку:
{ "test" : { "hello" : "world" } }
Получение реестра
Получить реестр по всем workspace:
let reg = await this.Registry.getAll({}, "common", log)
Также, при изменении реестра будет вызвано событие, на которое можно подписаться:
this.Registry.onChanged.on(()=> this.projectsChanged())
No Comments