@message-queue-toolkit/amqp
Version:
AMQP adapter for message-queue-toolkit
54 lines • 2.15 kB
JavaScript
import { AbstractPublisherManager } from '@message-queue-toolkit/core';
import { CommonAmqpTopicPublisherFactory } from "./CommonAmqpPublisherFactory.js";
export class AmqpTopicPublisherManager extends AbstractPublisherManager {
constructor(dependencies, options) {
super({
isAsync: false,
eventRegistry: dependencies.eventRegistry,
metadataField: options.metadataField ?? 'metadata',
metadataFiller: options.metadataFiller,
newPublisherOptions: options.newPublisherOptions,
publisherDependencies: {
amqpConnectionManager: dependencies.amqpConnectionManager,
logger: dependencies.logger,
errorReporter: dependencies.errorReporter,
},
publisherFactory: options.publisherFactory ?? new CommonAmqpTopicPublisherFactory(),
});
}
resolvePublisherConfigOverrides(exchange) {
return {
exchange,
};
}
resolveCreationConfig(exchange) {
return {
...this.newPublisherOptions,
exchange,
updateAttributesIfExists: false,
};
}
/**
* @deprecated use `publishSync` instead.
*/
publish() {
throw new Error('Please use `publishSync` method for AMQP publisher managers');
}
publishSync(exchange, message, messageOptions, precedingEventMetadata) {
const publisher = this.targetToPublisherMap[exchange];
if (!publisher) {
throw new Error(`No publisher for exchange ${exchange}`);
}
const messageDefinition = this.resolveMessageDefinition(exchange, message);
const resolvedMessage = this.resolveMessage(messageDefinition, message, precedingEventMetadata);
publisher.publish(resolvedMessage, {
routingKey: messageOptions?.routingKey ?? messageDefinition?.topic ?? '',
publishOptions: messageOptions?.publishOptions,
});
return resolvedMessage;
}
resolveEventTarget(event) {
return event.exchange;
}
}
//# sourceMappingURL=AmqpTopicPublisherManager.js.map