@rewaa/event-broker
Version:
A broker for all the events that Rewaa will ever produce or consume
82 lines (81 loc) • 3.43 kB
TypeScript
import { IEmitterOptions, IEmitter, Queue, Topic, IEmitOptions, EventListener, ConsumeOptions, ProcessMessageOptions, IBatchMessage, IBatchEmitOptions, IFailedEmitBatchMessage, IFailedConsumerMessages, Logger, IMessage, EmitPayload, EmitBatchPayload } from "../types";
import { Message } from "@aws-sdk/client-sqs";
export declare class SqnsEmitter implements IEmitter {
private readonly logger;
private snsProducer;
private sqsProducer;
private lambdaClient;
private dynamoClient;
private localEmitter;
private options;
private topicListeners;
private topics;
private queues;
private consumersStarted;
private outbox?;
constructor(logger: Logger, options: IEmitterOptions);
private getUniqueKeyForTopicListener;
private getTopicListeners;
private addTopicListener;
bootstrap(topics?: Topic[]): Promise<void>;
private tagQueues;
private createEventSourceMappings;
private addDefaultTopics;
private configureOutbox;
private createTopic;
private createTopics;
private createQueue;
private createQueues;
private getTopicArn;
private getQueueArn;
private getQueueUrl;
private subscribeToTopics;
private getQueueName;
private getTopicName;
private logFailedEvent;
private emitToTopic;
private emitToQueue;
getEmitPayload(eventName: string, options?: IEmitOptions, payload?: any): EmitPayload;
emit(eventName: string, options?: IEmitOptions, payload?: any): Promise<void>;
private internalEmit;
private emitBatchToTopic;
private emitBatchToQueue;
getBatchEmitPayload(eventName: string, messages: IBatchMessage[], options?: IBatchEmitOptions): EmitBatchPayload;
private getBatchMessagesForQueue;
private getBatchMessagesForTopic;
emitBatch(eventName: string, messages: IBatchMessage[], options?: IBatchEmitOptions): Promise<IFailedEmitBatchMessage[]>;
startConsumers(): Promise<void>;
private addConsumerWorkerToQueue;
private startConsumer;
private handleMessageReceipt;
removeListener(eventName: string, listener: EventListener<any>, consumeOptions?: ConsumeOptions): void;
removeAllListener(): void;
private getTopicFromEventNameAndConsumeOptions;
on(eventName: string, listener: EventListener<any>, options?: ConsumeOptions): void;
private getSeparateConsumer;
private isConsumerFifo;
private onMessageReceived;
private getDeduplicationKey;
private isMessageAlreadyProcessed;
private handleOutboxEvent;
parseDataFromMessage<T>(receivedMessage: Message): IMessage<T>;
private mapMessageAttributesFromSNS;
private deleteMessages;
private processFifoQueueMessages;
private processStandardQueueMessages;
processMessages(messages: Message[], options?: ProcessMessageOptions): Promise<IFailedConsumerMessages>;
processMessage(message: Message, options?: ProcessMessageOptions): Promise<void>;
getTopicReference(topic: Topic): string;
getInternalTopicName(topic: Topic): string;
getQueues(): Queue[];
getQueueReference(topic: Topic): string;
getInternalQueueName(topic: Topic): string;
private getQueueUrlFromMessage;
private getQueueUrlFromARN;
private getMessageIdFromMessage;
private getQueueNameFromUrl;
private saveEventToOutbox;
private getOutboxTopicName;
private getOutboxEmitOptions;
private getApproximateReceiveCount;
}