45 lines
1.8 KiB
TypeScript
45 lines
1.8 KiB
TypeScript
import { Span } from './telemetry';
|
|
import { SpanKind } from '../enums/telemetry-attributes';
|
|
import { KeysMap } from '../classes/queue-keys';
|
|
import { QueueBaseOptions } from './queue-options';
|
|
import { IQueueBackend } from './queue-backend';
|
|
/**
|
|
* The minimal, datastore-agnostic surface that {@link Job} and other helpers
|
|
* need from a queue. Redis specifics (client, version, …) live behind the
|
|
* {@link IQueueBackend} the queue owns.
|
|
*/
|
|
export interface MinimalQueue {
|
|
readonly name: string;
|
|
readonly qualifiedName: string;
|
|
keys: KeysMap;
|
|
toKey: (type: string) => string;
|
|
opts: QueueBaseOptions;
|
|
closing: Promise<void> | undefined;
|
|
/**
|
|
* The datastore backend the queue operates through.
|
|
*/
|
|
backend: IQueueBackend;
|
|
/**
|
|
* Emits an event. Normally used by subclasses to emit events.
|
|
*
|
|
* @param event - The emitted event.
|
|
* @param args -
|
|
* @returns
|
|
*/
|
|
emit(event: string | symbol, ...args: any[]): boolean;
|
|
on(event: string | symbol, listener: (...args: any[]) => void): this;
|
|
removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
|
|
waitUntilReady(): Promise<void>;
|
|
/**
|
|
* Wraps the code with telemetry and provides a span for configuration.
|
|
*
|
|
* @param spanKind - kind of the span: Producer, Consumer, Internal
|
|
* @param operation - operation name (such as add, process, etc)
|
|
* @param destination - destination name (normally the queue name)
|
|
* @param callback - code to wrap with telemetry
|
|
* @param srcPropagationMetadata -
|
|
* @returns
|
|
*/
|
|
trace<T>(spanKind: SpanKind, operation: string, destination: string, callback: (span?: Span, dstPropagationMetadata?: string) => Promise<T> | T, srcPropagationMetadata?: string): Promise<T | Promise<T>>;
|
|
}
|