Neovictorian Paisley Menswear

    nacos-nestjs-util
    TypeScript icon, indicating that this package has built-in type declarations

    1.0.9 • Public • Published

    1.0.8更新内容

    1.服务注册逻辑: (1)注册服务时,如果服务器设置了环境变量HOST_IP和SERVER_PORT,那么会把HOST_IP和SERVER_PORT作为服务的IP和PORT进行注册。 (2)如果服务器没有设置环境变量,那么获取.env相关配置(SERVICE_IP,PORT)作为服务的IP和PORT进行注册。 (3)如果本地未配置,那么自动获取服务器IP以及使用默认端口3000进行服务注册。 2.新增获取服务实例集合方法

    介绍

    本工具基于NestJs8.0以及nacos2.2.1,用于微服务中服务发现注册,注销,以及访问服务等。

    要求

    1. 需要开启nest框架中的shutdownHooks,再应用的生命周期中做注册以及注销。
    2. 设置globalPrefix需要和注册的服务名称一致(被调用的服务一样,context-path也需要与服务名一致)
    3. 注册服务的端口号和应用的端口号一致

    使用

    1. 安装
    >npm install nacos-nestjs-util --save
    >npm install nacos --save
    
    1. 在.env文件中增加如下配置,注意:NestJs获取.env文件需要添加ConfigModule,具体参考官方文档
        imports:[ConfigModule.forRoot({
          envFilePath: ['.env', '.env.' + process.env.NODE_ENV],
        })],
    
    DISCOVERY_SERVERLIST = 192.168.56.101:1234 #配置nacos服务地址
    DISCOVERY_NAMESPACE = public #配置nacos的空间名称(服务也是注册到此空间)
    DISCOVERY_GROUP = UAT #配置nacos的分组名称
    DISCOVERY_APPNAME = node-service #本服务名称
    SERVICE_IP = 192.168.1.111 #本服务IP(可选)
    PORT = 3000 #本服务端口号(可选)
    HTTP_PREFIX = http:// #访问URI的前缀
    
    1. 开启shutdownHooks
      app.enableShutdownHooks();
    1. 配置全局前缀以及端口号
      app.setGlobalPrefix(process.env.DISCOVERY_APPNAME); //请求前缀
      await app.listen(process.env.PORT);
    1. 在根module导入HookModule
    imports:[HookModule]
    1. 调用服务示例
            //获取服务temp-service的uri
            const uri = await NacosUtil.getServiceUriWithL('temp-service');
            //如果配置了分组请传入所属分组
            #const uri = await NacosUtil.getServiceUriWithL('temp-service', 'groupName');
            //调用temp-service提供的/demo/user/list接口
            const result = await axios.post(uri + '/demo/user/list', {});

    API列表

        /**
         * 根据服务名返回健康并启用的实例URI
         * @param serviceName 需要调用的服务名
         * @param groupName 分组名称,如果传空默认DEFAULT_GROUP 
         * @return uri
         */
        static async getServiceUri(serviceName: string, groupName: string);
    
        /**
         * 随机返回一个健康并启用的实例URI
         * @param serviceName 需要调用的服务名
         * @param groupName 分组名称,如果传空默认DEFAULT_GROUP
         * @return uri
         */
        static async getServiceUriWithLB(serviceName: string, groupName: string);
    
        /**
         * 根据服务名和组名获取服务实例集合
         * @param serviceName 需要调用的服务名
         * @param groupName 分组名称,如果传空默认DEFAULT_GROUP
         * @return instanceList 
         */
        static async getInstanceListBySerName(serviceName: string, groupName: string);

    Install

    npm i nacos-nestjs-util

    DownloadsWeekly Downloads

    1

    Version

    1.0.9

    License

    MIT

    Unpacked Size

    94.3 kB

    Total Files

    15

    Last publish

    Collaborators

    • cloudbian