프로젝트 소개

@node-ts/bus는 복원력 있는 메시지 기반 애플리케이션 개발을 단순화하기 위해 설계된 TypeScript 라이브러리입니다. 이 라이브러리는 기반 버스 전송의 기술적 세부 사항을 추상화하여 개발자가 최소한의 보일러플레이트로 느슨하게 결합된 시스템을 만드는 데 집중할 수 있게 해줍니다. 이 라이브러리를 사용하면 개발자가 메시지와 메시지 핸들러를 정의할 수 있으며, 메시지 전송, 구독, 재시도가 자동으로 관리됩니다. 실패가 발생하면 메시지가 재시도를 위해 큐로 반환되어 애플리케이션의 복원력을 높입니다. 또한 장기 실행 프로세스에서 여러 메시지와 핸들러를 조정하기 위한 메시지 워크플로(saga)를 제공하여 애플리케이션을 더 견고하고 자가 치유적이며 데이터 손실이나 손상에 강하게 만듭니다. Node.js 24 이상이 필요합니다. ## 구성 요소 이 프로젝트는 여러 패키지로 구성된 모노레포입니다: - **@node-ts/bus-core**: 메시지 송수신 및 워크플로 관리를 위한 핵심 버스 라이브러리 - **@node-ts/bus-messages**: 자체 메시지, 이벤트, 명령을 정의하기 위한 메시지 타입 정의 - **@node-ts/bus-class-serializer**: 클래스 인스턴스로 변환하는 JSON 직렬화기 - **@node-ts/bus-postgres**: Postgres 영속성 어댑터 - **@node-ts/bus-mongodb**: MongoDB 영속성 어댑터 - **@node-ts/bus-rabbitmq**: RabbitMQ 전송 어댑터 - **@node-ts/bus-sqs**: Amazon SQS 전송 어댑터 ## 개발 기여자를 위해 이 저장소는 모노레포 지원과 워크스페이스를 위해 `pnpm`을 사용합니다. 주요 스크립트는 다음과 같습니다: - `bootstrap`: 모든 패키지에 의존성을 설치하고 루트로 호이스팅 - `build`: 모든 패키지 빌드 - `build:watch`: 모든 패키지를 빌드하고 증분 빌드로 변경 사항 감시 - `clean`: 모든 dist 및 node_modules 폴더 제거 - `lint`: 저장소 전체에 ESLint(typescript-eslint, 타입 인식) 실행 - `format`: prettier로 포맷 - `test`: 단위 및 통합 테스트 실행 - `test:watch`: 감시 모드로 테스트 실행 문서는 [https://bus.node-ts.com](https://bus.node-ts.com)에서 확인할 수 있으며, 질문은 GitHub Discussions로 보낼 수 있습니다.