UNPKG

ts-api-core

Version:

Nodejs api framework core

95 lines (94 loc) 3.27 kB
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 {};