Когда вы вызываете действие или создаете событие, брокер создает экземпляр контекста Context
, который содержит всю информацию о запросе и передает его обработчику действия/события в качестве единого аргумента.
Свойства Context
Имя | Тип | Описание |
---|---|---|
ctx.id |
String |
ID контекста |
ctx.broker |
ServiceBroker |
Объект брокера. |
ctx.nodeID |
String |
ID вызывающего или целевого узла. |
ctx.action |
Object |
Экземпляр действия. |
ctx.event |
Object |
Экземпляр события. |
ctx.eventName |
Object |
Имя созданного события. |
ctx.eventType |
String |
Тип события (“emit” или “broadcast”). |
ctx.eventGroups |
Array<String> |
Группа событий. |
ctx.caller |
String |
Полное имя вызывающего сервиса. Пример: v3.myService |
ctx.requestID |
String |
ID запроса. Если вы совершаете вложенные вызовы, то ID будет одинаковый. |
ctx.parentID |
String |
ID родительского контекста (во вложенных вызовах). |
ctx.params |
Any |
Параметры запроса. Второй аргумент в broker.call . |
ctx.meta |
Any |
Мета-данные запроса. Они также будут переданы на вложенные вызовы. |
ctx.locals |
Any |
Локальные данные. |
ctx.level |
Number |
Уровень запроса (во вложенных вызовах). Первый уровень 1 . |
ctx.span |
Span |
Текущий активный интервал. |
Методы Контекста
Название | Ответ | Описание |
---|---|---|
ctx.call() |
Promise |
Создание вложенного вызова. Те же аргументы, как в broker.call |
ctx.emit() |
void |
Создать событие, аналогично broker.emit |
ctx.broadcast() |
void |
Создать событие, адресованное всем узлам, аналогично broker.broadcast |
ctx.startSpan(name, opts) |
Span |
Создать интервал-потомок. |
ctx.finishSpan(span) |
void |
Завершить интервал. |
ctx.toJSON() |
Object |
Преобразовать Контекст в JSON формат. |
ctx.copy() |
this |
Создать копию Context экземпляра. |
Отслеживание Контекста
Если вы хотите, чтобы сервисы плавно отключались, включите функцию отслеживания контекста в опциях брокера. Тогда сервисы будут ожидать завершения процессов в активных контекстах, перед тем как отключаться. Время таймаута задается через опцию брокера shutdownTimeout
. Значение по-умолчанию 5
секунд.
Пример включения отслеживания контекста и установка таймаута:
const broker = new ServiceBroker({ |
Время таймаута может быть переопределено через свойство
$shutdownTimeout
в настройках сервиса.
Отмена слежения в опциях вызова:
await broker.call("posts.find", {}, { tracking: false }); |