这个项目能做什么

@node-ts/bus 是一个 TypeScript 库,旨在简化弹性、基于消息的应用程序的开发。它抽象了底层总线传输的技术细节,让开发者能够专注于以最少的样板代码创建松耦合系统。 该库使开发者能够定义消息和消息处理器,同时自动管理消息传输、订阅和重试。在发生故障时,消息会被返回到队列中以进行重试,从而提升应用程序的弹性。它还提供消息工作流(sagas),用于在长时间运行的流程中协调多个消息和处理器,使应用程序更加健壮、自愈,并能抵抗数据丢失或损坏。 需要 Node.js 24 或更高版本。 ## 组件 该项目是一个包含多个包的 monorepo: - **@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` 来支持 monorepo 和工作区。关键脚本包括: - `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。