import { Instance } from "../instance"; import { Metadata } from "../metadata"; import { Service } from "../service"; import { SelectorOptions, CallArgsType, CombinatedArgs } from "./selector"; import { Monitor, MonitorOptions } from "./monitor"; import { HealthOptions } from "./health"; import { PluginList, PluginType, ServiceRules, RegistryCategory } from "../plugins"; import { PartialKeys } from "../utils"; import { Logger, LoggerOptions } from "../logging"; import { SkeletonClass } from "../skeleton"; import { LocalRegistryOptions } from "../registry"; export { CallArgsType } from "./selector"; export { ComputedStat, InstanceStat } from "./monitor"; export { StatusChangelog, StatusChangeRequest } from "./health"; declare const kSelector: unique symbol; declare const kMonitor: unique symbol; declare const kHealth: unique symbol; declare const kRegistry: unique symbol; export declare class SelectResponse { readonly callee: Service; readonly instance: Instance; private readonly [kMonitor]; constructor(callee: Service, instance: Instance, monitor: Monitor); /** * 上报调用结果 * @param success 是否调用成功 * @param cost 调用耗时(需大于等于 0,默认为 0) * @param code 返回码(可选) */ update(success: boolean, cost?: number, code?: string): void; } export declare type ConsumerOptions = MonitorOptions & HealthOptions & SelectorOptions & LoggerOptions & LocalRegistryOptions; export declare type ConsumerPluginList = PartialKeys, PluginType.CircuitBreaker>; /** * For internal use only. * Use `Consumer` instead of `InternalConsumer`. */ export declare class InternalConsumer extends SkeletonClass { private readonly [kSelector]; private readonly [kMonitor]; private readonly [kHealth]; private readonly [kRegistry]; /** * Create Consumer * @param plugins 插件(可选) * @param options 配置参数(可选) * @param logger Logger 对象共享,如不传则会自动创建 */ constructor(plugins?: Partial, options?: Partial, logger?: Logger); /** * 销毁(释放)所占资源 * * @description * dispose order: * Monitor -> Health -> Selector -> Registry -> [plguins] * * @param sync 是否同步释放(可选) */ dispose(sync?: boolean): void; /** * 获取单个服务实例 * @param namespace 被调方名字空间 * @param service 被调方服务名 * @param metadata 主调方服务元数据(可选) * @param args 本次调用附加参数(可选) */ select(namespace: string, service: string, metadata?: Metadata, args?: CallArgsType): Promise; /** * 获取单个服务实例 * @param callee 被调方服务信息 * @param caller 主调方服务信息(可选) * @param args 本次调用附加参数(可选) */ select(callee: Service, caller?: Service, args?: CallArgsType): Promise; /** * 获取全部服务实例 * @param namespace 服务名字空间 * @param service 服务名 */ list(namespace: string, service: string): Promise; /** * 获取服务规则路由 * @param namespace 服务名字空间 * @param service 服务名 */ rules(namespace: string, service: string): Promise; /** * 强制刷新缓存 * @param namespace 服务名字空间 * @param service 服务名 * @param type 数据存储类别 */ update(namespace: string, service: string, type: RegistryCategory): Promise; } export declare class Consumer extends InternalConsumer { /** * 当前可实例化的最大次数 */ static get maxInstances(): number; /** * 设置可实例化的最大次数 * @param n 最大次数 */ static setMaxInstances(n: number): void; /** * Create Consumer * @param plugins 插件(可选) * @param options 配置参数(可选) */ constructor(plugins?: Partial, options?: Partial); /** * 销毁(释放)所占资源 * @param sync 是否同步释放(可选) */ dispose(sync?: boolean): void; }