@getanthill/datastore
Version:
Event-Sourced Datastore
41 lines (40 loc) • 1.68 kB
TypeScript
import type { JSONSchemaType } from 'ajv';
import type { Access, AnyObject, Telemetry } from '../typings';
import type { Route } from './broker';
import amqplib, { ConsumeMessage } from 'amqplib';
import Broker from './broker';
export default class AMQPClient extends Broker {
static ERRORS: {
NOT_CONNECTED: Error;
};
private _connection;
private _channel;
private _queue;
private _alreadyConnected;
private _connectionId;
private _connectionUrls;
private _closing;
private _consumerTag;
private _consuming;
private _consumerTags;
constructor(config: any, telemetry?: Telemetry);
get connection(): amqplib.Connection;
get channel(): amqplib.Channel;
mapRoutingKey(topic: string, schema: JSONSchemaType<AnyObject>): Route & {
routingKey: string;
};
connect(): Promise<AMQPClient>;
init(): Promise<AMQPClient>;
end(): Promise<AMQPClient>;
authenticate(tokens: Access[], handler: (...args: any[]) => Promise<void>): (event: any, route: any, headers: any, opts: any) => Promise<void> | undefined;
nackIfFirstSeen(message: ConsumeMessage): void;
onMessage(message: ConsumeMessage | null): void;
emptyQueue(): Promise<void>;
publish(topic: string, payload: object, options?: object): Promise<boolean | undefined>;
consume(queueConfig: {
name: string;
}, consumeOptions?: amqplib.Options.Consume): Promise<void>;
resubscribe(): Promise<Awaited<this>[]>;
subscribe(topic: string, schema: JSONSchemaType<AnyObject>, queueConfig?: any): Promise<this>;
next(topic: string, timeout?: number, cb?: (opts: any) => Promise<any>): Promise<string>;
}