@axinom/mosaic-transactional-inbox-outbox
Version:
This library encapsulates the Mosaic based transactional inbox and outbox pattern
48 lines • 2.69 kB
JavaScript
;
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