ts-api-core
Version:
Nodejs api framework core
95 lines (94 loc) • 3.27 kB
TypeScript
import { Options } from "amqplib/properties";
import { BaseProvider } from '../../mvc/ioc.decorator';
/** RabbitMQ 配置 */
export declare class RabbitMQConfig {
/** 协议 `amqp` 或 `amqps`,默认 `amqp` */
protocol?: string;
/** 服务地址 */
host: string;
/** 端口,默认 `5672` */
port?: number;
/** 密码,默认 `guest` */
password?: string;
/** 用户名,默认 `guest` */
username?: string;
/** 心跳间隔,s, 默认 `10` */
heartbeat?: number;
/** 虚拟默认 `/` */
virtualHost?: string;
/** 消息队列名称 */
queueName: string;
/** 交换器的名字 */
exchangeName: string;
/** 交换机模型,默认 `topic` 主题模式 */
exchangeType?: string;
/** 交换机参数 `{ durable: true, autoDelete: false }` */
exchangeArgs?: {
/** 是否持久化,默认 `true` */
durable: boolean;
/** 是否自动删除已处理过的消息,默认 `false` */
autoDelete: boolean;
};
/** 消息处理失败时最大重试次数 */
retryCount?: number;
/** 消息处理产生错误时是否允许重新归队, 默认 `true` */
faildRequeue?: boolean;
/** 消息接受用于绑定的路由键 */
routeKey?: string;
/** 消息发送用于绑定的路由键 */
sendRouteKey?: string;
/** 客户端1次处理最大消息条数,默认 `1` */
prefetch?: number;
/** 是否声明队列为排他队列,默认 `false` */
exclusive?: boolean;
/** 消息订阅选项 */
consumeOptions?: Options.Consume;
/** 区域设置,默认 `en_US` */
locale?: string;
}
declare type ReceiveEvent = (msg: any) => Promise<boolean>;
/**
* RabbitMQ Client Access
*/
export interface IRabbitMQAccess {
config: RabbitMQConfig;
/** 接收消息事件, 处理消息时发生错误或返回`false`则认为处理失败 */
onRecvMsg: ReceiveEvent;
/** 开始消息订阅和消费 */
consume: (onRecvMsg?: ReceiveEvent, routeKey?: string, config?: RabbitMQConfig) => void;
/** 消息发送, args 默认 `{ persistent: true, mandatory: true }` */
send: (msg: any, args?: Options.Publish) => Promise<void>;
}
/**
* RabbitMQ Client Access
*/
export declare class RabbitMQAccess extends BaseProvider implements IRabbitMQAccess {
onFree(): void;
constructor(config: RabbitMQConfig);
private _amqplib;
private get amqplib();
config: RabbitMQConfig;
private routeKey?;
onRecvMsg: ReceiveEvent;
/** 网络连接 */
private recvConnection;
private sendConnection;
/** 消息接收通道 */
private receiveChannel;
/** 消息发送通道 */
private sendChannel;
consume(onRecvMsg?: ReceiveEvent, routeKey?: string, config?: RabbitMQConfig): void;
send(msg: any, args?: Options.Publish): Promise<void>;
private sendMsg;
private startRecvServer;
private relase;
private relaseRecvConn;
private relaseSendConn;
private getConnection;
private reStartRecv;
private assertChannel;
private assertQueue;
private initialChannel;
private initChannelExchange;
}
export {};