用途:该技能面向使用 NestJS 构建分布式系统与微服务架构的场景,包括跨多个服务拆分关注点、使用消息代理(Redis、Kafka、NATS、RabbitMQ)、创建 gRPC 服务、构建事件驱动架构以及横向扩展应用。
主要能力:NestJS 微服务使用不同于 HTTP 的传输层进行服务间通信,支持 TCP、Redis、NATS、MQTT、Kafka、gRPC、RabbitMQ,并提供请求响应与事件驱动两种通信模式。@MessagePattern() 用于请求响应(期待确认),@EventPattern() 用于事件(发后即忘),模式可为字符串或对象。
使用方式:先安装基础包 npm i @nestjs/microservices,再按传输层安装对应依赖,如 Redis 用 npm i redis,NATS 用 npm i nats,Kafka 用 npm i kafkajs,gRPC 用 npm i @grpc/grpc-js @grpc/proto-loader,RabbitMQ 用 npm i amqplib amqp-connection-manager,MQTT 用 npm i mqtt。服务端用 NestFactory.createMicroservice 指定 transport 与 options;客户端可用 ClientProxyFactory.create、@Client 装饰器或注入 ClientProxy,通过 send(请求响应)或 emit(事件)通信。还可用 connectMicroservice 与 startAllMicroservices 把 HTTP 与微服务组合为混合应用。
可扩展点:支持守卫(canActivate 配合 switchToRpc().getData())、RpcExceptionFilter 异常过滤、@Payload 与 @Ctx 获取上下文与元数据,以及服务发现、Saga 模式、RxJS timeout 请求超时。
限制与注意:资料仅给出代码示例和最佳实践建议(如选传输层、用 RpcException、重试、校验、监控、熔断、版本化、Schema Registry、独立测试),未提供具体的价格、收费、平台支持范围或实际性能数据,这些暂未提供。