美文网首页
NestJS 使用microservice

NestJS 使用microservice

作者: ThirstyZebra | 来源:发表于2019-07-31 21:51 被阅读0次

    NestJS 环境搭建

    这里我使用的nrwl来初始化nest项目, nest cli 之类同理可以初始化项目出来

    NestJS 初始化一个微服务

    nestjs提供connectMicroService 和createMicroSerivice.
    两者的不同点是在connectMicroService 是以一个socket主服务的额外服务存在.
    由于nestjs支持多种服务化运行, 如http grpc 等等, socket主服务大部门可能大部份以http形式启动运行.
    createMicroSerivice 是主服务就是微服务, 初入nestjs可以看下两个函数的api, 它们是非常不同的.
    现在做测试, 用connectMicroService ,

    app = createApplication();
    app.connectMicroService({
      transport: Transport.TCP,
      options: {
        port: 5557
      }
    })
    

    好, 起了一个5557的tcp微服务.

    默认的TCP服务

    TCP的TCP服务其实是一个自定义的带长度的JSON数据SOCKET
    传输格式为 len(int)#(char)json_str(string) 中间的#是固定的.
    大致形式为 13#{"foo":"bar"} 这里json格式是任意写的, 实际上json有固定的字段.
    {"partern": any, "data":any, "id"?:number } partern是一个可以序列化的object或字符串, 用于生成token, 生成token时key会做递归排序. id是可选的, 当id传了时, tcp服务端会返回一个销毁的消息
    他大致像{"partern": "destroy", , "id":20 }

    结论

    所有的微服务需要映射到 类似 {"partern": "destroy", }的数据结构, 当然自己写类不用 partern 也是可行的, 自已的Controller注解不要继承于ParternMessage即可.
    其他基于TCP的二进制数据转到对像时, 这个对像最好继承{"partern": any, "data":any, "id"?:number }, key值存在即可, partern 还要当token用, 用于Controller映射到请求

    相关文章

      网友评论

          本文标题:NestJS 使用microservice

          本文链接:https://www.haomeiwen.com/subject/oxpxdctx.html