///
import * as amqp from 'amqplib';
import { EventEmitter } from 'events';
import { Channel } from './channel';
import Queue from './queue';
import getLogger from './logger';
export default class Rabbit extends EventEmitter {
url: string;
static STOP_PROPAGATION: {
stopPropagation: boolean;
};
static STOP_STREAM: string;
static INSTANCE: Rabbit;
consumeConnection: amqp.ChannelModel;
publishConnection: amqp.ChannelModel;
consumeChannel: Channel;
publishChannel: Channel;
connected: Promise;
lock: Promise;
queues: {
[s: string]: Queue;
};
connecting: boolean;
prefetch: number;
replyPattern: boolean;
prefix: string;
scheduledPublish: boolean;
socketOptions: any;
private defaultQueueType;
logger: ReturnType;
private readonly sigtermHandler;
constructor(url: string, { prefetch, replyPattern, prefix, scheduledPublish, socketOptions, defaultQueueType, }?: {
prefetch?: number;
replyPattern?: boolean;
prefix?: string;
scheduledPublish?: boolean;
socketOptions?: any;
defaultQueueType?: string;
});
private connect;
reconnect(): Promise;
private emitDisconnected;
createChannel(connection: amqp.ChannelModel): Promise;
initChannel(channel: Channel, publish?: boolean): Promise;
private updateName;
createQueue(name: string, options?: amqp.Options.AssertQueue & amqp.Options.Consume & {
prefix?: string;
prefetch?: any;
}, handler?: (msg: any, ack: (error?: any, reply?: any) => any) => any): Promise;
destroyQueue(name: string, prefix?: string): Promise;
subscribe(name: any, handler: (msg: any, ack: (reply: any) => any) => any, prefix?: string): Promise;
unsubscribe(name: any, prefix?: string): Promise;
publish(name: string, obj: any, headers?: amqp.Options.Publish, prefix?: string): Promise;
publishWithDelay(name: string, obj: any, properties?: amqp.Options.Publish, prefix?: string): Promise;
getReply(name: string, obj: any, properties: amqp.Options.Publish, prefix?: string, timeout?: number): Promise;
getTopicReply(topicName: string, content: any, properties: amqp.Options.Publish, prefix?: string, timeout?: number): Promise;
publishExchange(exchange: string, routingKey: string, content: any, headers: amqp.Options.Publish, prefix?: string): Promise;
publishTopic(topicName: string, content: any, headers?: amqp.Options.Publish, prefix?: string): Promise;
bindToExchange(queueName: string, exchange: string, routingKey: string, prefix?: string): Promise;
unbindFromExchange(queueName: string, exchange: any, topicName: any, prefix?: string): Promise;
bindToTopic(queueName: string, topicName: string, prefix?: string): Promise;
unbindFromTopic(queueName: string, topicName: string, prefix?: string): Promise;
close(): Promise;
private handleSigterm;
}