Quando você chama uma ação ou emite um evento, o broker cria uma instância de context
que contém todas as informações da requisição e a passa para o handler da ação/evento como um único argumento.
Propriedades de Context
Nome | Tipo | Descrição |
---|---|---|
ctx.id |
String |
ID do contexto |
ctx.broker |
ServiceBroker |
Instância do broker. |
ctx.nodeID |
String |
O ID do nó do requisitante ou do destino. |
ctx.action |
Object |
Instância da definição de ação. |
ctx.event |
Object |
Instância da definição do evento. |
ctx.eventName |
Object |
Nome do evento emitido. |
ctx.eventType |
String |
Tipo de evento (“emit” ou “broadcast”). |
ctx.eventGroups |
Array<String> |
Grupos de eventos. |
ctx.caller |
String |
Nome completo do serviço do requisitante. Ex.: v3.myService |
ctx.requestID |
String |
ID da Requisição. Se você fizer chamadas aninhadas, será o mesmo ID. |
ctx.parentID |
String |
ID do contexto pai (em chamadas aninhadas). |
ctx.params |
Any |
Parâmetros da requisição. Segundo argumento do broker.call . |
ctx.meta |
Any |
Metadados da requisição. Será transferido para chamadas aninhadas |
ctx.locals |
Any |
Dados locais. |
ctx.level |
Number |
Nível da requisição (em chamadas aninhadas). O primeiro nível é 1 . |
ctx.span |
Span |
Span atual ativo. |
Métodos de context
Nome | Retorno | Descrição |
---|---|---|
ctx.call() |
Promise |
Fazer chamadas aninhadas. Mesmos argumentos como em broker.call |
ctx.emit() |
void |
Emitir um evento, o mesmo que broker.emit |
ctx.broadcast() |
void |
Emitir um evento, o mesmo que broker.broadcast |
ctx.startSpan(name, opts) |
Span |
Criar um novo span filho. |
ctx.finishSpan(span) |
void |
Finalizar um span. |
ctx.toJSON() |
Object |
Converter Context para um JSON formatado. |
ctx.copy() |
this |
Criar uma cópia da instância de Context . |
Rastreamento de context
Se você quer desligamentos elegantes dos serviços, ative o recurso Context tracking nas opções do broker. Se você habilitá-lo, todos os serviços esperarão por todos os context em execução antes de desligar. Um valor de timeout pode ser definido com a opção shutdownTimeout
no broker. O valor padrão é 5
segundos.
Ativar context tracking & alterar o valor do timeout
const broker = new ServiceBroker({ |
O timeout de desligamento pode ser substituído pela propriedade
$shutdownTimeout
nas configurações de serviço.
Desativar tracking nas opções de chamada
await broker.call("posts.find", {}, { tracking: false }); |