Moleculer possui um manipulador errors
integrado para gerar um erro nos serviços.
Classes de erros base
MoleculerError
A classe base de erros.
Parâmetros
Nome | Tipo | Valor padrão | Descrição |
---|---|---|---|
message |
String |
Mensagem de erro | |
code |
Number |
500 |
Código do erro |
type |
String |
Tipo de erro | |
data |
any |
Qualquer dado relevante |
Exemplo
const { MoleculerError } = require("moleculer").Errors; |
MoleculerRetryableError
Retornos para erros resilientes. É usado em broker.call
. O broker tenta novamente requisições que foram rejeitadas por um erro MoleculerRetryableError
.
Parâmetros
Nome | Tipo | Valor padrão | Descrição |
---|---|---|---|
message |
String |
Mensagem de erro | |
code |
Number |
500 |
Código do erro |
type |
String |
Tipo de erro | |
data |
any |
Qualquer dado relevante |
Exemplo
const { MoleculerRetryableError } = require("moleculer").Errors; |
MoleculerServerError
Retornos para erros de servidor resilientes. Os parâmetros são os mesmos que MoleculerRetryableError
.
MoleculerClientError
Retornos para o cliente de erros que são não repetidos. Os parâmetros são os mesmos que MoleculerError
.
Classes de erro internas
ServiceNotFoundError
Retorna se você fizer um call
em uma ação de serviço não registrado. Código de erro: 404 Retryable: true Type: SERVICE_NOT_FOUND
ServiceNotAvailableError
Retorna se você fizer um call
em uma ação indisponível no momento. Ex.: nó desconectado que contém este serviço ou circuit breaker está aberto. Error code: 404 Retryable: true Type: SERVICE_NOT_AVAILABLE
RequestTimeoutError
Retorna se a sua requisição atingiu o timeout. Error code: 504 Retryable: true Type: REQUEST_TIMEOUT
RequestSkippedError
Retorna se sua chamada aninhada for ignorada porque a execução atingiu o timeout distribuído. Error code: 514 Retryable: false Type: REQUEST_SKIPPED
RequestRejectedError
Retorna se o nó chamado for desconectado durante a requisição. Error code: 503 Retryable: true Type: REQUEST_REJECTED
QueueIsFullError
Retorna se houver muitas solicitações ativas. Error code: 429 Retryable: true Type: QUEUE_FULL
ValidationError
O validador retorna se os parâmetros de entrada não forem válidos. Error code: 422 Retryable: false Type: VALIDATION_ERROR
(default)
MaxCallLevelError
Retorna caso suas chamadas aninhadas tenham atingido o valor maxCallLevel
(para evitar laços de chamada infinitos). Error code: 500 Retryable: false Type: MAX_CALL_LEVEL
ServiceSchemaError
Retorna se o esquema de serviço não for válido. Error code: 500 Retryable: false Type: SERVICE_SCHEMA_ERROR
BrokerOptionsError
Retorna se suas opções do broker não forem válidas. Error code: 500 Retryable: false Type: BROKER_OPTIONS_ERROR
GracefulStopTimeoutError
Retorna se o desligamento atingir o timeout. Error code: 500 Retryable: false Type: GRACEFUL_STOP_TIMEOUT
ProtocolVersionMismatchError
Retorna se um nodeID antigo estiver conectado com a versão do protocolo antigo. Error code: 500 Retryable: false Type: PROTOCOL_VERSION_MISMATCH
InvalidPacketDataError
Retorne caso o módulo de transporte receba dados desconhecidos. Error code: 500 Retryable: false Type: INVALID_PACKET_DATA
Criar erros personalizados
O exemplo a seguir mostra como criar uma classe personalizada de erro
que é herdada de MoleculerError
.
const { MoleculerError } = require("moleculer").Errors; |
Preservar classes de erro personalizadas durante a transferência entre nós remotos
Para esse propósito, forneça seu próprio Regenerador
. Recomendamos ver o código fonte do Errors.Regenerator e implementar os métodos restore
, extractPlainError
ou restoreCustomError
.
Interface pública do Regenerador
Método | Retorno | Descrição |
---|---|---|
restore(plainError, payload) |
Error |
Restaura um objeto error |
extractPlainError(err) |
Object |
Extrai um objeto de erro simples do objeto Error |
restoreCustomError(plainError, payload) |
Error or undefined |
Hook para restaurar um erro personalizado em uma classe filha. Prefira usar esse método em vez do método restore . |
Criar regenerador personalizado
const { Regenerator, MoleculerError } = require("moleculer").Errors; |
Usar regenerador personalizado
// moleculer.config.js |