UNPKG

@axinom/mosaic-transactional-inbox-outbox

Version:

This library encapsulates the Mosaic based transactional inbox and outbox pattern

48 lines 2.69 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.setupPollingOutboxListener = exports.setupReplicationOutboxListener = void 0; const pg_transactional_outbox_1 = require("pg-transactional-outbox"); const transactional_log_mapper_1 = require("../transactional-log-mapper"); const setupRabbitMqPublisher = (broker) => { return { handle: async (message) => { // Publish a message const { envelopeOverrides, options, action } = message.metadata; (action === 'command' ? broker.publishCommand : broker.publishEvent).call(broker, message.aggregateId, { aggregateType: message.aggregateType, messageType: message.messageType, }, message.payload, envelopeOverrides, options); }, }; }; /** * Setup the transactional outbox listener to send messages. * @param listenerConfig The service configurations * @param broker RabbitMQ based messaging broker * @param logger A service-common library based logger instance * @param config A service-common library based config object * @param strategies Optional strategies to customize the outbox message processing * @returns shutdown action to stop the outbox listener */ const setupReplicationOutboxListener = (listenerConfig, broker, logger, config, strategies) => { const transactionalLogger = new transactional_log_mapper_1.TransactionalLogMapper(logger, config.logLevel); const [shutdown] = (0, pg_transactional_outbox_1.initializeReplicationMessageListener)(listenerConfig, setupRabbitMqPublisher(broker), transactionalLogger, strategies); return shutdown; }; exports.setupReplicationOutboxListener = setupReplicationOutboxListener; /** * Setup the transactional outbox listener to send messages. * @param listenerConfig The service configurations * @param broker RabbitMQ based messaging broker * @param logger A service-common library based logger instance * @param config A service-common library based config object * @param strategies Optional strategies to customize the outbox message processing * @returns shutdown action to stop the outbox listener */ const setupPollingOutboxListener = (listenerConfig, broker, logger, config, strategies) => { const transactionalLogger = new transactional_log_mapper_1.TransactionalLogMapper(logger, config.logLevel); const [shutdown] = (0, pg_transactional_outbox_1.initializePollingMessageListener)(listenerConfig, setupRabbitMqPublisher(broker), transactionalLogger, strategies); return shutdown; }; exports.setupPollingOutboxListener = setupPollingOutboxListener; //# sourceMappingURL=setup-transactional-outbox-listener.js.map