@gabliam/amqp
Version:
amqp plugin for gabliam
55 lines (54 loc) • 2.39 kB
JavaScript
;
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;