Moleculer · Schema

Moleculer Broker Configuration

JSON Schema for the moleculer.config.js broker configuration file, covering transporter, serializer, cacher, logger, metrics, tracing, and other broker options.

Fault ToleranceFrameworksJavaScriptLoad BalancingMicroservicesNode.jsService Discovery

Properties

Name Type Description
namespace string Namespace for node segmentation.
nodeID string Unique node identifier. Auto-generated if not set.
metadata object Custom metadata for the node.
logger object Logger configuration. Can be boolean, string, object, or array.
transporter object Transporter for inter-node communication.
cacher object Cacher configuration for action results.
serializer object Serializer for message encoding.
requestTimeout integer Request timeout in milliseconds (0 = disabled).
retryPolicy object Retry policy for failed requests.
contextParamsCloning boolean Clone context params for safety.
maxCallLevel integer Maximum nested call level to prevent infinite loops.
heartbeatInterval integer Heartbeat interval in seconds.
heartbeatTimeout integer Heartbeat timeout in seconds.
tracking object Request tracking and graceful shutdown configuration.
disableBalancer boolean Disable built-in request balancer (for transporter balancing).
registry object Service registry options.
circuitBreaker object Circuit breaker configuration.
bulkhead object Bulkhead configuration for concurrency limiting.
validator object Parameter validator.
errorHandler string Global error handler function name.
metrics object Metrics configuration.
tracing object Distributed tracing configuration.
middlewares array List of middleware to load.
replCommands array Custom REPL commands.
View JSON Schema on GitHub

JSON Schema

moleculer-config.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://github.com/api-evangelist/moleculer/json-schema/moleculer-config.json",
  "title": "Moleculer Broker Configuration",
  "description": "JSON Schema for the moleculer.config.js broker configuration file, covering transporter, serializer, cacher, logger, metrics, tracing, and other broker options.",
  "type": "object",
  "properties": {
    "namespace": {
      "type": "string",
      "description": "Namespace for node segmentation.",
      "default": ""
    },
    "nodeID": {
      "type": "string",
      "description": "Unique node identifier. Auto-generated if not set."
    },
    "metadata": {
      "type": "object",
      "description": "Custom metadata for the node.",
      "additionalProperties": true
    },
    "logger": {
      "description": "Logger configuration. Can be boolean, string, object, or array.",
      "oneOf": [
        { "type": "boolean" },
        { "type": "string" },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "description": "Logger type.",
              "enum": ["Console", "File", "Pino", "Bunyan", "Winston", "Debug", "Log4js"]
            },
            "options": {
              "type": "object",
              "description": "Logger-specific options.",
              "properties": {
                "level": {
                  "type": "string",
                  "enum": ["trace", "debug", "info", "warn", "error", "fatal"],
                  "default": "info"
                },
                "colors": {
                  "type": "boolean",
                  "default": true
                },
                "moduleColors": {
                  "type": "boolean",
                  "default": false
                },
                "formatter": {
                  "type": "string",
                  "enum": ["full", "short", "simple"]
                },
                "autoPadding": {
                  "type": "boolean",
                  "default": false
                }
              },
              "additionalProperties": true
            }
          }
        },
        {
          "type": "array",
          "items": {
            "type": "object"
          }
        }
      ]
    },
    "transporter": {
      "description": "Transporter for inter-node communication.",
      "oneOf": [
        { "type": "string", "description": "Connection string (e.g., nats://localhost:4222, redis://localhost:6379)." },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "description": "Transporter type.",
              "enum": ["NATS", "Redis", "MQTT", "AMQP", "AMQP10", "STAN", "Kafka", "TCP"]
            },
            "options": {
              "type": "object",
              "description": "Transporter-specific options.",
              "additionalProperties": true
            }
          }
        },
        { "type": "null" }
      ]
    },
    "cacher": {
      "description": "Cacher configuration for action results.",
      "oneOf": [
        { "type": "boolean" },
        { "type": "string" },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": ["Memory", "MemoryLRU", "Redis", "RedisSentinel"]
            },
            "options": {
              "type": "object",
              "properties": {
                "ttl": {
                  "type": "integer",
                  "description": "Default TTL in seconds.",
                  "default": 30
                },
                "maxParamsLength": {
                  "type": "integer",
                  "default": 100
                },
                "redis": {
                  "type": "string",
                  "description": "Redis connection string."
                }
              },
              "additionalProperties": true
            }
          }
        },
        { "type": "null" }
      ]
    },
    "serializer": {
      "description": "Serializer for message encoding.",
      "oneOf": [
        { "type": "string", "enum": ["JSON", "Avro", "MsgPack", "Notepack", "ProtoBuf", "Thrift", "CBOR"] },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string"
            },
            "options": {
              "type": "object",
              "additionalProperties": true
            }
          }
        },
        { "type": "null" }
      ],
      "default": "JSON"
    },
    "requestTimeout": {
      "type": "integer",
      "description": "Request timeout in milliseconds (0 = disabled).",
      "default": 0
    },
    "retryPolicy": {
      "type": "object",
      "description": "Retry policy for failed requests.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "default": false
        },
        "retries": {
          "type": "integer",
          "default": 5
        },
        "delay": {
          "type": "integer",
          "description": "Initial delay in milliseconds.",
          "default": 100
        },
        "maxDelay": {
          "type": "integer",
          "description": "Maximum delay in milliseconds.",
          "default": 1000
        },
        "factor": {
          "type": "number",
          "description": "Backoff factor.",
          "default": 2
        },
        "check": {
          "type": "string",
          "description": "Error check function expression."
        }
      },
      "additionalProperties": true
    },
    "contextParamsCloning": {
      "type": "boolean",
      "description": "Clone context params for safety.",
      "default": false
    },
    "maxCallLevel": {
      "type": "integer",
      "description": "Maximum nested call level to prevent infinite loops.",
      "default": 0
    },
    "heartbeatInterval": {
      "type": "integer",
      "description": "Heartbeat interval in seconds.",
      "default": 10
    },
    "heartbeatTimeout": {
      "type": "integer",
      "description": "Heartbeat timeout in seconds.",
      "default": 30
    },
    "tracking": {
      "type": "object",
      "description": "Request tracking and graceful shutdown configuration.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "default": false
        },
        "shutdownTimeout": {
          "type": "integer",
          "description": "Shutdown timeout in milliseconds.",
          "default": 5000
        }
      },
      "additionalProperties": true
    },
    "disableBalancer": {
      "type": "boolean",
      "description": "Disable built-in request balancer (for transporter balancing).",
      "default": false
    },
    "registry": {
      "type": "object",
      "description": "Service registry options.",
      "properties": {
        "strategy": {
          "type": "string",
          "description": "Load balancing strategy.",
          "enum": ["RoundRobin", "Random", "CpuUsage", "Latency", "Shard"],
          "default": "RoundRobin"
        },
        "preferLocal": {
          "type": "boolean",
          "default": true
        }
      },
      "additionalProperties": true
    },
    "circuitBreaker": {
      "type": "object",
      "description": "Circuit breaker configuration.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "default": false
        },
        "threshold": {
          "type": "number",
          "description": "Failure rate threshold (0.0 - 1.0).",
          "default": 0.5
        },
        "minRequestCount": {
          "type": "integer",
          "default": 20
        },
        "windowTime": {
          "type": "integer",
          "description": "Time window in seconds.",
          "default": 60
        },
        "halfOpenTime": {
          "type": "integer",
          "description": "Half-open state duration in milliseconds.",
          "default": 10000
        },
        "check": {
          "type": "string",
          "description": "Error check function expression."
        }
      },
      "additionalProperties": true
    },
    "bulkhead": {
      "type": "object",
      "description": "Bulkhead configuration for concurrency limiting.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "default": false
        },
        "concurrency": {
          "type": "integer",
          "default": 10
        },
        "maxQueueSize": {
          "type": "integer",
          "default": 100
        }
      },
      "additionalProperties": true
    },
    "validator": {
      "description": "Parameter validator.",
      "oneOf": [
        { "type": "boolean" },
        { "type": "string" },
        { "type": "object" }
      ],
      "default": true
    },
    "errorHandler": {
      "type": "string",
      "description": "Global error handler function name."
    },
    "metrics": {
      "type": "object",
      "description": "Metrics configuration.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "default": false
        },
        "reporter": {
          "oneOf": [
            { "type": "string" },
            {
              "type": "object",
              "properties": {
                "type": {
                  "type": "string",
                  "enum": ["Console", "CSV", "Datadog", "Event", "Prometheus", "StatsD"]
                },
                "options": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            },
            {
              "type": "array",
              "items": { "type": "object" }
            }
          ]
        }
      },
      "additionalProperties": true
    },
    "tracing": {
      "type": "object",
      "description": "Distributed tracing configuration.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "default": false
        },
        "exporter": {
          "oneOf": [
            { "type": "string" },
            {
              "type": "object",
              "properties": {
                "type": {
                  "type": "string",
                  "enum": ["Console", "Datadog", "Event", "EventLegacy", "Jaeger", "Zipkin", "NewRelic"]
                },
                "options": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            },
            {
              "type": "array",
              "items": { "type": "object" }
            }
          ]
        }
      },
      "additionalProperties": true
    },
    "middlewares": {
      "type": "array",
      "description": "List of middleware to load.",
      "items": {
        "type": "object"
      }
    },
    "replCommands": {
      "type": "array",
      "description": "Custom REPL commands.",
      "items": {
        "type": "object"
      }
    }
  },
  "additionalProperties": true
}