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.

Конфигурация

Опции брокера

Эти опции могут использоваться в конструкторе ServiceBroker или в файле moleculer.config.js.

Список всех доступных опций брокера:

  • namespace: String - Пространство имён узла для сегментации узлов в одной сети (например: “development”, “staging”, “production”). По умолчанию: ""
  • nodeID: String - Уникальный идентификатор узла. Должно быть уникальным в пространстве имен. Иначе брокер бросит фатальную ошибку и остановит процесс. По умолчанию: имя хоста + PID
  • logger: Boolean | String | Object | Array<Object> ) - класс Logger. По умолчанию выводит сообщения в консоль. Подробнее. _По умолчанию: "Console"
  • logLevel: String | Object - Уровень ведения журнала (trace, debug, info, warn, error, fatal). Подробнее. По умолчанию: info
  • transporter: String | Object | Transporter - Конфигурация транспорта. Подробнее. По умолчанию: null
  • requestTimeout: Number - Количество миллисекунд, чтобы подождать, прежде чем отклонить запрос с ошибкой RequestTimeout. Отключить: 0 По умолчанию: 0
  • retryPolicy: Object - Конфигурации политики повторных запросов. Подробнее.
  • contextParamsCloning: Boolean - Включить клонирование параметров params контекста. Оказывает сильное влияние на производительность. Используйте его с осторожностью! По умолчанию: false
  • dependencyInterval: Настраиваемый интервал (определён в ms) который используется сервисами, в ожидании обслуживания зависимостей. По умолчанию: 1000
  • maxCallLevel: Number - Ограничение уровня вложенных действий. Если он достигнет предела, брокер бросит ошибку MaxCallLevelError. (Защита от бесконечного цикла) По умолчанию: 0
  • heartbeatInterval: Number - Период отправки пакета сердечного ритма, в секундах. По умолчанию: 5
  • heartbeatTimeout: Number - Число секунд ожидания перед установкой статуса недоступности удаленного узла в реестре. По умолчанию: 15
  • tracking: Object - Отслеживание запросов и ожидание выполнения запросов перед выключением. (Плавное выключение) Подробнее.
  • disableBalancer: Boolean - Отключить встроенный балансировщик действий и событий. Транспорт должен поддерживать его. Подробнее. По умолчанию: false
  • registry: Object - Настройки Реестра сервиса.
  • circuitBreaker: Object - Настройки Circuit Breaker.
  • bulkhead: Object - Настройки bulkhead.
  • transit.maxQueueSize: Number - Защита от чрезмерного потребления памяти, когда слишком много исходящих запросов. Если число запросов больше указанного, новые запросы будут отклонены с ошибкой QueueIsFullError. По умолчанию: 50000
  • transit.maxChunkSize Number - Максимальный размер чанка в потоке. По умолчанию: 256KB
  • transit.disableReconconnect: Boolean - отключает логику переподключения при запуске брокера. По умолчанию: false
  • transit.disableVersionCheck: Boolean - отключить логику проверки версии протокола при переходе. По умолчанию: false
  • transit.packetLogFilter: Array - Фильтрует пакеты в отладочных сообщениях. Может быть полезно отфильтровать HEARTBEAT пакетов при отладке. По умолчанию: []
  • uidGenerator: Function - Пользовательская функция генерации UID для идентификатора контекста.
  • errorHandler: Function - Глобальный обработчик ошибок функции.
  • cacher: String | Object | Cacher - Настройки кэша. Подробнее. По умолчанию: null
  • serializer: String | Serializer - Экземпляр сериализатора. Подробнее. По умолчанию: JSONSerializer
  • validator: Boolean | Validator - Включить по умолчанию или создать пользовательскую валидацию параметров. По умолчанию: true
  • errorRegenerator: Regenerator - Instance of error regenerator. Read more. По умолчанию: null
  • metrics: Boolean | Object - Включить & сконфигурировать metrics функционал. По умолчанию: false
  • tracing: Boolean | Object - Включить & настроить tracing функционал. По умолчанию: false
  • internalServices: Boolean | Object - Регистрировать внутренние сервисы при старте. По умолчанию: true
  • internalServices.$node - Object - Расширьте внутренние сервисы с пользовательскими действиями. По умолчанию: null
  • internalMiddlewares: Boolean - Регистрация внутренних промежуточных функций. По умолчанию: true
  • hotReload: Boolean - Отслеживать загруженные сервисы и перезагружать их при изменениях. Read more. По умолчанию: false
  • middlewares: Array<Object> - Регистрировать пользовательские промежуточные функции. По умолчанию: null
  • replDelimiter: String - Custom REPL commands delimiter. Default: mol $
  • replCommands: Array<Object> - Регистрировать пользовательские REPL команды. По умолчанию: null
  • metadata: Object - Хранить пользовательские значения. По умолчанию: null
  • skipProcessEventRegistration: Boolean - Пропустить по умолчанию обработчики событий плавного завершения. В этом случае необходимо зарегистрировать их вручную. По умолчанию: false
  • maxSafeObjectSize: Number - Maximum size of objects that can be serialized. On serialization process, check each object property size (based on length or size property value) and trim it, if object size bigger than maxSafeObjectSize value. По умолчанию: null
  • created: Function - Выстреливает при создании брокера. По умолчанию: null
  • начал: Функция - Выстреливает при запуске брокера (все локальные сервисы загружены & траснпорт подключен). По умолчанию: null
  • stopped: Function - Выстреливает при остановке брокера (все локальные сервисы остановлены & транспорт отключен). По умолчанию: null
  • ServiceFactory: ServiceClass - Пользовательский класс Сервиса. Если не null, брокер будет использовать его при создании сервисов с использованием схемы сервиса. По умолчанию: null
  • ContextFactory: ContextClass - Пользовательский класс Контекста. Если не null, брокер будет использовать его при создании контекстов запросов & событий. По умолчанию: null

Объект всех настроек

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