whale-nest-nacos
Version:
If you are a nest micro service architecture, you can use the SDK, so as to realize service discovery based on nacos, distributed load balancing strategy
36 lines (35 loc) • 2.45 kB
TypeScript
import { ClientGrpc } from '@nestjs/microservices';
import { NacosConfigClient } from 'nacos';
import { WhaleNacosClient } from '../baseNacos/WhaleNacosClient';
import { NacosInstance, LoadBalanceServiceOptions, AllowUndefined, Connection, NacosGrpcOptions } from '../interface';
export default class LoadBalanceService {
nacosNamingClient: any;
nacosConfigClient: AllowUndefined<NacosConfigClient>;
serviceClusterName: AllowUndefined<string>;
group: string;
serviceName: string;
packageName: NacosGrpcOptions['packageName'];
protoPath: NacosGrpcOptions['protoPath'];
loadBalance: (arg0: Connection[]) => ClientGrpc;
connectionPool: Connection[];
instancePool: NacosInstance[];
singleClientGrpc: AllowUndefined<ClientGrpc>;
proxyClientGrpc: AllowUndefined<ClientGrpc>;
hasInstance: AllowUndefined<boolean>;
grpcOptions: Partial<NacosGrpcOptions>;
nacosClientInstance: WhaleNacosClient;
constructor({ group, serviceName, packageName, protoPath, loadBalance, ...grpcOptions }: LoadBalanceServiceOptions);
ready(): Promise<void>;
buildConnectioPool(serviceName: string, packageName: NacosGrpcOptions['packageName'], protoPath: NacosGrpcOptions['protoPath']): Promise<void>;
selectHealthyInstances(serviceName: string, group: AllowUndefined<string>): Promise<NacosInstance[]>;
createClientGrpc(ip: string, packageName: NacosGrpcOptions['packageName'], protoPath: NacosGrpcOptions['protoPath']): import("@nestjs/microservices").ClientGrpcProxy;
batchCreateClientGrpc(instanceList: NacosInstance[], packageName: NacosGrpcOptions['packageName'], protoPath: NacosGrpcOptions['protoPath']): Connection[];
selectOneConnectionByLoadbalance(): ClientGrpc;
subscribe(serviceName: string, packageName: NacosGrpcOptions['packageName'], protoPath: NacosGrpcOptions['protoPath']): void;
getGrpcProxyConfig(packageName: NacosGrpcOptions['packageName'], protoPath: NacosGrpcOptions['protoPath']): Promise<void>;
subscribeProxyConfig(): void;
getConfig(service: string, packageName: NacosGrpcOptions['packageName'], protoPath: NacosGrpcOptions['protoPath']): Promise<void>;
subscribeConfig(serviceName: string, packageName: NacosGrpcOptions['packageName'], protoPath: NacosGrpcOptions['protoPath'], group?: string): void;
setServiceClusterName(instanceList: NacosInstance[]): void;
formatInstanceList(instanceList: NacosInstance[]): NacosInstance[];
}