Configuração

Opções do broker

Essas opções podem ser usadas no construtor do ServiceBroker ou no arquivo moleculer.config.js.

Lista de todas as opções do broker disponíveis:

  • namespace: String - Namespace de nós para segmentar seus nós na mesma rede (por exemplo: “development”, “staging”, “production”). Default: ""
  • nodeID: String - Identificador de nó único. Deve ser único em um namespace. Se não o broker irá retornar um erro fatal e abortar o processo. Default: hostname + PID
  • logger: Boolean | String | Object | Array<Object> ) - Classe de Logger. Por padrão, ele imprime mensagem no console. Leia mais. _Default: <code>"Console"
  • logLevel: String | Object - Nível de log (trace, debug, info, warn, error, fatal). Leia mais. Default: info
  • transporter: String | Object | Transporter - Configuração do módulo de transporte. Leia mais. Default: null
  • requestTimeout: Number - Número de milissegundos para esperar antes de rejeitar uma solicitação com um erro de RequestTimeout. Desabilitado: 0 Default: 0
  • retryPolicy: Object - Configuração de política de repetição. Leia mais.
  • contextParamsCloning: Boolean - Clonando os parâmetros do context, se habilitado. Alto impacto no desempenho. Use-o com cuidado! Default: false
  • dependencyInterval: Intervalo configurável (definido em ms) é usado pelos serviços enquanto aguarda dependências de serviços. Default: 1000
  • maxCallLevel: Number - Limite de níveis de chamadas. Se atingir o limite, o broker retornará um erro MaxCallLevelError. (Proteção de Loop infinito) Default: 0
  • heartbeatInterval: Number - Número de segundos para enviar um pacote de sinal de vida para outros nós. Default: 5
  • heartbeatTimeout: Number - Número de segundos para esperar antes de configurar nós remotos para o status indisponível no Registro. Default: 15
  • tracking: Object - Rastrear requisições e aguardar pelas requisições em andamento antes de desligar. (Desligamento elegante) Leia mais.
  • disableBalancer: Boolean - Desabilitar o balanceamento de carga integrado em requisições & emissões de evento. O módulo de transporte também precisa atender. Leia mais. Default: false
  • registry: Object - Configurações do Service Registry.
  • circuitBreaker: Object - Configurações do Circuit Breaker.
  • bulkhead: Object - Configurações do bulkhead.
  • transit.maxQueueSize: Number - Uma proteção contra uso exagerado de memória quando existem muitas solicitações de saída. Se houver mais requisições em tempo real do que o indicado, as novas solicitações serão rejeitadas com o erro QueueIsFullError. Default: 50000
  • transit.maxChunkSize Number - Tamanho máximo durante streaming. Default: 256KB
  • transit.disableReconnect: Boolean - Desabilita a lógica de reconexão ao iniciar o broker. Default: false
  • transit.disableVersionCheck: Boolean - Desabilita a validação de versão do protocolo em Transit. Default: false
  • transit.packetLogFilter: Array - Filtra os pacotes nas mensagens de log do debug. Pode ser útil filtrar os pacotes HEARTBEAT durante o debug. Default: []
  • uidGenerator: Function - Função de gerador de UID customizada para ID Context.
  • errorHandler: Function - Função Manipulador de erros global.
  • cacher: String | Object | Cacher - Configurações de cache. Leia mais. Default: null
  • serializer: String | Serializer - Instância do serializador. Leia mais. Default: JSONSerializer
  • validator: Boolean | Validator - Habilita o padrão ou cria validação de parâmetros personalizada. Default: true
  • errorRegenerator: Regenerador - Instância do regenerador de erro. Leia mais. Default: null
  • metrics: Boolean | Object - Habilita & configura o recurso de métricas. Default: false
  • tracing: Boolean | Object - Habilita & configura o recurso de tracing. Default: false
  • internalServices: Boolean | Object - Registra serviços internos ao inicializar. Default: true
  • internalServices.$node - Object - Amplia serviços internos com ações customizadas. Default: null
  • internalMiddlewares: Boolean - Registra middlewares internos. Default: true
  • hotReload: Boolean - Observar os serviços carregados e recarregar se forem alterados. Leia mais. Default: false
  • middlewares: Array<Object> - Registre middlewares personalizados. Default: null
  • replDelimiter: String - Delimitador personalizado de comandos REPL. Default: mol $
  • replCommands: Array<Object> - Registre comandos REPL personalizados. Default: null
  • metadata: Object - Armazene valores personalizados. Default: null
  • skipProcessEventRegistration: Boolean - Ignore o manipulador padrão de eventos de desligamento elegante. Neste caso, você tem que registrá-los manualmente. Default: false
  • maxSafeObjectSize: Number - Tamanho máximo de objetos que podem ser serializados. No processo de serialização, checa a propriedade size de cada objeto (baseado no valor da propriedade length ou size) aparando as extremidades, se o tamanho do objeto for maior que o valor de maxSafeObjectSize. Default: null
  • created: Function - Acionado quando o broker for criado. Default: null
  • started: Function - Acionado quando o broker for inicializado (todos os serviços locais carregados & módulo de transporte conectado). Default: null
  • stopped: Function - Acionado quando o broker for parado (todos os serviços locais parados & módulo de transporte está desconectado). Default: null
  • ServiceFactory: ServiceClass - Classe Service personalizada. Se não for null, o broker usará ao criar serviços via esquema de serviço. Default: null
  • ContextFactory: ContextClass - Classe Context personalizada. Se não for null, o broker usará ao criar contextos para requisições & eventos. Default: null

Opções completas

{
namespace: "dev",
nodeID: "node-25",

logger: true,
logLevel: "info",
logFormatter: "default",
logObjectPrinter: null,

transporter: "nats://localhost:4222",

requestTimeout: 5000,
retryPolicy: {
enabled: true,
retries: 5,
delay: 100,
maxDelay: 1000,
factor: 2,
check: err => err && !!err.retryable
},

contextParamsCloning: false,
maxCallLevel: 100,
heartbeatInterval: 5,
heartbeatTimeout: 15,

tracking: {
enabled: true,
shutdownTimeout: 5000,
},

disableBalancer: false,

registry: {
strategy: "RoundRobin",
preferLocal: true
},

circuitBreaker: {
enabled: true,
threshold: 0.5,
windowTime: 60,
minRequestCount: 20,
halfOpenTime: 10 * 1000,
check: err => err && err.code >= 500
},

bulkhead: {
enabled: true,
concurrency: 10,
maxQueueSize: 100,
},

transit: {
maxQueueSize: 50 * 1000,
disableReconnect: false,
disableVersionCheck: false,
packetLogFilter: ["HEARTBEAT"]
},

uidGenerator: null,

errorHandler: null,

cacher: "MemoryLRU",
serializer: "JSON",

validator: true,
errorRegenerator: null,

metrics: {
enabled: true,
reporter: [
"Console"
]
},

tracing: {
enabled: true,
exporter: [
"Console"
]
},

internalServices: true,
internalMiddlewares: true,

hotReload: true,

middlewares: ["MyMiddleware"],

replDelimiter: "mol $",
replCommands: [],

metadata: {
region: "eu-west1"
},

skipProcessEventRegistration: false,
maxSafeObjectSize: null,

ServiceFactory: null,
ContextFactory: null,

created(broker) {},

started(broker) {},

stopped(broker) {}
}