smqp
Version:
Synchronous message queueing package
94 lines (87 loc) • 3.41 kB
TypeScript
import { ConsumeOptions, ExchangeEventEmitter, onMessage } from './types.js';
import { Message, MessageFields, MessageProperties, MessageMessage } from './Message.js';
type queueOptions = {
/** makes queue durable, i.e. will be returned when getting state, defaults to true */
autoDelete?: boolean;
/** makes queue durable, i.e. will be returned when getting state */
durable?: boolean;
messageTtl?: number;
maxLength?: number;
deadLetterExchange?: string;
deadLetterRoutingKey?: string;
[x: string]: any;
};
type deleteQueueOptions = {
ifUnused?: boolean;
ifEmpty?: boolean;
};
export interface QueueState {
name: string;
options: queueOptions;
messages?: MessageMessage[];
}
export const enum QueueEventNames {
/** Consumer was cancelled */
QueueConsumerCancel = 'consumer.cancel',
/** Consumer was added */
QueueConsume = 'consume',
/** Message was dead-lettered, sends deadLetterExchange name and message */
QueueDeadLetter = 'dead-letter',
/** Queue was deleted */
QueueDelete = 'delete',
/** Queue is depleted */
QueueDepleted = 'depleted',
/** Message was queued */
QueueMessage = 'message',
/** Queue is ready to receive new messages */
QueueReady = 'ready',
/** Queue is saturated, i.e. max capacity was reached */
QueueSaturated = 'saturated',
}
export class Queue extends ExchangeEventEmitter {
constructor(name?: string, options?: queueOptions, eventEmitter?: ExchangeEventEmitter);
get name(): string;
options: queueOptions;
get consumerCount(): number;
get consumers(): Consumer[];
get exclusive(): boolean;
get messageCount(): number;
get stopped(): boolean;
queueMessage(fields: MessageFields, content?: any, properties?: MessageProperties): number;
evictFirst(compareMessage?: Message): boolean;
consume(onMessage: onMessage, consumeOptions?: ConsumeOptions, owner?: any): Consumer;
assertConsumer(onMessage: onMessage, consumeOptions?: ConsumeOptions, owner?: any): Consumer;
get(options?: ConsumeOptions): Message | undefined;
ack(message: Message, allUpTo?: boolean): void;
nack(message: Message, allUpTo?: boolean, requeue?: boolean): void;
reject(message: Message, requeue?: boolean): void;
ackAll(): void;
nackAll(requeue?: boolean): void;
peek(ignoreDelivered?: boolean): Message | undefined;
cancel(consumerTag: string, requeue?: boolean): boolean;
dismiss(onMessage: onMessage, requeue?: boolean): void;
unbindConsumer(consumer: Consumer, requeue?: boolean): void;
emit(eventName: string, content?: any): number | undefined;
on(eventName: string | QueueEventNames, handler: CallableFunction, options?: ConsumeOptions): Consumer;
off(eventName: string | QueueEventNames, handler: CallableFunction | ConsumeOptions): void;
purge(): number;
getState(): QueueState;
recover(state?: QueueState): Queue;
delete(options?: deleteQueueOptions): { messageCount: number };
close(): void;
stop(): void;
}
export class Consumer {
constructor(queue: Queue, onMessage: onMessage, options: ConsumeOptions, owner?: any, eventEmitter?: ExchangeEventEmitter);
options: ConsumeOptions;
get consumerTag(): string;
get ready(): boolean;
get stopped(): boolean;
get capacity(): number;
get messageCount(): number;
get queueName(): string;
nackAll(requeue?: boolean): void;
ackAll(): void;
cancel(requeue?: boolean): void;
prefetch(value: number): void;
}