New release is coming soon! If you want to try out the latest features, simply run npm i -s moleculer@next. The docs for the latest version are available here.

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) {}
}