registerMiddlewares(userMiddlewares) {
		// Register user middlewares
		if (Array.isArray(userMiddlewares) && userMiddlewares.length > 0) {
			_.compact(userMiddlewares).forEach(mw => this.middlewares.add(mw));
		}

		if (this.options.internalMiddlewares) {
			// Register internal middlewares
			INTERNAL_MIDDLEWARES.forEach(mw => this.middlewares.add(mw));

			if (this.options.hotReload) {
				// 14. Hot Reload
				this.middlewares.add("HotReload");
			}
		}
		this.logger.info(`Registered ${this.middlewares.count()} middleware(s).`);

		this.createService = this.wrapMethod("createService", this.createService);
		this.registerLocalService = this.wrapMethod(
			"registerLocalService",
			this.registerLocalService
		);
		this.destroyService = this.wrapMethod("destroyService", this.destroyService);
		this.call = this.wrapMethod("call", this.call);
		this.callWithoutBalancer = this.wrapMethod("call", this.callWithoutBalancer);
		this.mcall = this.wrapMethod("mcall", this.mcall);
		this.emit = this.wrapMethod("emit", this.emit);
		this.broadcast = this.wrapMethod("broadcast", this.broadcast);
		this.broadcastLocal = this.wrapMethod("broadcastLocal", this.broadcastLocal);

		this.metrics.set(METRIC.MOLECULER_BROKER_MIDDLEWARES_TOTAL, this.middlewares.count());
	}
Register middlewares (user & internal)

@memberof ServiceBroker