搜索

PythonReactSEOPDF
GitHub Skill

nestjs-microservices

gRPC, RabbitMQ standards and Monorepo contracts.

HoangNguyen0403☆ 143 仓库 Stars48 仓库 Forks

安装与使用

请根据来源仓库和你的 AI 工具说明安装此技能。先阅读技能文件和依赖要求,再添加到工作流。

查看来源 ↗使用指南

技能说明

Microservices & Transport Standards

Priority: P0 (FOUNDATIONAL)

Microservices communication patterns and transport layer standards.

  • Synchronous (RPC): Use gRPC for low-latency, internal service-to-service calls.
    • Why: 10x faster than REST/JSON, centralized .proto contracts.
  • Asynchronous (Events): Use RabbitMQ or Kafka for decoupling domains.
    • Pattern: Fire-and-forget (emit()) for side effects (e.g., "UserCreated" -> "SendEmail").

Monorepo Architecture

  • Contracts:
    • Pattern: Store all DTOs, .proto files, and Interfaces in a Shared Library (libs/contracts).
    • Rule: Services never import code from other services. They only import from contracts.
  • Versioning: Semantic versioning of messages is mandatory. Never change a field type; add a new field.

Exception Handling

  • Propagation: Standard HttpException is lost over Rpc/Tcp.

  • Standard: Use RpcException and generic Filters.

    // Global RPC Filter
    @Catch()
    export class RpcExceptionFilter implements RpcExceptionFilter<RpcException> {
      catch(exception: RpcException, host: ArgumentsHost): Observable<any> {
        return throwError(() => exception.getError());
      }
    }
    

Serialization

  • Message DTOs: Use class-validator just like HTTP.
    • Config: Apply useGlobalPipes(new ValidationPipe({ transform: true })) in the MicroserviceOptions setup, not just HTTP app setup.

使用示例

查看来源仓库中的使用示例与配置说明。

查看来源 ↗

来源历史

收录时间
2026-01-20
索引更新时间
2026-01-26
Branch
main

收录与同步日期属于本站记录。源码修改历史请查看来源仓库。

GitHub ↗

chat Comments (0)

chat_bubble_outline

No comments yet. Be the first to share your thoughts!