这个项目能做什么
@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。
评论
0 人表达喜爱 · 满10人后显示 Deer Point
登录后参与讨论。