UNPKG

@gabliam/amqp

Version:
55 lines (54 loc) 2.39 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AmqpPlugin = void 0; const tslib_1 = require("tslib"); const core_1 = require("@gabliam/core"); const debug_1 = tslib_1.__importDefault(require("debug")); const amqp_manager_1 = require("./amqp-manager"); const constants_1 = require("./constants"); const metadatas_1 = require("./metadatas"); const debug = (0, debug_1.default)('Gabliam:Plugin:AmqpPlugin'); let AmqpPlugin = class AmqpPlugin { build(container, registry) { debug('build AmqpPlugin'); const controllerIds = registry.get(constants_1.TYPE.RabbitController); const connectionManager = container.get(amqp_manager_1.AmqpConnectionManager); debug('controllerIds', controllerIds, container); controllerIds.forEach(({ id: controllerId }) => { const controller = container.get(controllerId); debug('controller', controller); const handlerMetadatas = core_1.reflection.propMetadataOfDecorator(controller.constructor, metadatas_1.RabbitConsumer, metadatas_1.RabbitListener); const [cunit] = core_1.reflection .annotationsOfDecorator(controller.constructor, metadatas_1.CUnit) .slice(-1); if (Object.keys(handlerMetadatas)) { for (const [key, metas] of Object.entries(handlerMetadatas)) { const [handlerMetadata] = metas.slice(-1); if (cunit) { connectionManager .getConnection(cunit.name) .constructAndAddConsume(key, handlerMetadata, controller); } else { connectionManager .getDefaultConnection() .constructAndAddConsume(key, handlerMetadata, controller); } } } }); } async start(container) { const connection = container.get(amqp_manager_1.AmqpConnectionManager); await connection.start(); } async stop(container) { const connection = container.get(amqp_manager_1.AmqpConnectionManager); await connection.stop(); } }; AmqpPlugin = tslib_1.__decorate([ (0, core_1.Plugin)(), (0, core_1.Scan)() ], AmqpPlugin); exports.AmqpPlugin = AmqpPlugin;