@message-queue-toolkit/core
Version:
Useful utilities, interfaces and base classes for message queue handling. Supports AMQP and SQS with a common abstraction on top currently
45 lines (44 loc) • 2.74 kB
TypeScript
import { type CommonLogger, type ErrorReporter, type TransactionObservabilityManager } from '@lokalise/node-core';
import type { MetadataFiller } from '../messages/MetadataFiller';
import type { HandlerSpy, HandlerSpyParams, PublicHandlerSpy } from '../queues/HandlerSpy';
import type { ConsumerMessageMetadataType } from '@message-queue-toolkit/schemas';
import type { EventRegistry } from './EventRegistry';
import type { AnyEventHandler, CommonEventDefinition, CommonEventDefinitionConsumerSchemaType, CommonEventDefinitionPublisherSchemaType, EventTypeNames, SingleEventHandler } from './eventTypes';
export type DomainEventEmitterDependencies<SupportedEvents extends CommonEventDefinition[]> = {
eventRegistry: EventRegistry<SupportedEvents>;
metadataFiller: MetadataFiller;
logger: CommonLogger;
errorReporter?: ErrorReporter;
transactionObservabilityManager?: TransactionObservabilityManager;
};
export declare class DomainEventEmitter<SupportedEvents extends CommonEventDefinition[]> {
private readonly eventRegistry;
private readonly metadataFiller;
private readonly logger;
private readonly errorReporter?;
private readonly transactionObservabilityManager?;
private readonly _handlerSpy?;
private readonly eventHandlerMap;
private readonly inProgressBackgroundHandlerByEventId;
constructor(deps: DomainEventEmitterDependencies<SupportedEvents>, options?: {
handlerSpy?: HandlerSpy<object> | HandlerSpyParams | boolean;
});
get handlerSpy(): PublicHandlerSpy<CommonEventDefinitionPublisherSchemaType<SupportedEvents[number]>>;
dispose(): Promise<void>;
emit<SupportedEvent extends SupportedEvents[number]>(supportedEvent: SupportedEvent, data: Omit<CommonEventDefinitionPublisherSchemaType<SupportedEvent>, 'type'>, precedingMessageMetadata?: Partial<ConsumerMessageMetadataType>): Promise<Omit<CommonEventDefinitionConsumerSchemaType<SupportedEvent>, 'type'>>;
/**
* Register handler for a specific event
*/
on<EventTypeName extends EventTypeNames<SupportedEvents[number]>>(eventTypeName: EventTypeName, handler: SingleEventHandler<SupportedEvents, EventTypeName>, isBackgroundHandler?: boolean): void;
/**
* Register handler for multiple events
*/
onMany<EventTypeName extends EventTypeNames<SupportedEvents[number]>>(eventTypeNames: EventTypeName[], handler: SingleEventHandler<SupportedEvents, EventTypeName>, isBackgroundHandler?: boolean): void;
/**
* Register handler for all events supported by the emitter
*/
onAny(handler: AnyEventHandler<SupportedEvents>, isBackgroundHandler?: boolean): void;
private handleEvent;
private executeEventHandler;
private buildTransactionKey;
}