event-driven-design
事件驱动架构(EDA)设计模式——事件定义、发布/订阅、事件溯源、幂等性、顺序保证。当系统需要异步解耦、跨服务协同或行为审计时触发。 触发词:事件驱动、EDA、消息队列、pub/sub、事件溯源、CQRS、异步。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
事件驱动架构(EDA)设计模式——事件定义、发布/订阅、事件溯源、幂等性、顺序保证。当系统需要异步解耦、跨服务协同或行为审计时触发。 触发词:事件驱动、EDA、消息队列、pub/sub、事件溯源、CQRS、异步。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
用 citty + @clack/prompts 构建 Node.js CLI 的端到端工作流,覆盖命令路由、参数 schema、 终端交互、异步任务 UI 与 ESM 发布。触发词:citty、clack、prompts、CLI、命令行、子命令、 交互式、spinner、defineCommand、runMain、ESM 发布。
构建、扩展或调试 CodeMirror 6 浏览器代码编辑器,覆盖状态事务、扩展原语、 装饰、Compartment、语言包、补全诊断、主题、React 集成与 CM5→CM6 迁移。 触发词:CodeMirror 6、CM6、@codemirror/、EditorView、StateField、 Lezer、@uiw/react-codemirror。
使用 @pierre/diffs 与 @pierre/trees 构建代码审查、PR 视图、IDE 文件树、Merge Conflict 解决器。 覆盖 React/Vanilla API、虚拟化、Worker Pool、SSR、Shadow DOM 主题、CodeMirror 集成。 触发词:pierre、diff 渲染、文件树、PR 视图、merge conflict。
GitHub 仓库运营 + npm 包 tag 触发发布的一体化工作流。覆盖 issue/PR 分诊、CI 排障、 安全告警,以及 npm publish(provenance / scoped)+ 自动 GitHub Release(CHANGELOG 段落注入)。 触发词:github、gh、release、publish、tag、npm、provenance、changelog、triage、ci broken、版本发布。
为长跑 AI Coding 任务(Codex /goal、Claude Code、Cursor、Kiro autopilot)构建可审计、 不假完成、抗漂移的提示词。激活后先澄清需求、自动加载 AGENTS.md / 当前 spec / lessons.md, 再产出 5 段式 goal 与长跑健康守则。触发词:goal、写 goal、长任务、长跑、ralph。
使用 Mantine 组件库构建 React UI。涵盖核心组件选型、主题定制、Styles API、 布局模式、表单处理、日期选择器、图表、日程组件、通知系统、模态框管理、 Spotlight 搜索、文件上传、轮播、富文本编辑与 50+ hooks。 触发词:Mantine、UI 组件、主题配置、Styles API、DatePicker、Schedule、 Heatmap、通知、模态框、表单布局、Spotlight、Dropzone、Carousel、hooks。
| name | event-driven-design |
| type | architecture-rule |
| description | 事件驱动架构(EDA)设计模式——事件定义、发布/订阅、事件溯源、幂等性、顺序保证。当系统需要异步解耦、跨服务协同或行为审计时触发。 触发词:事件驱动、EDA、消息队列、pub/sub、事件溯源、CQRS、异步。 |
| version | 1.0.0 |
| author | specforge |
事件是事实,不是命令。 事件描述「已经发生」的业务事实;命令描述「希望发生」的动作。混淆二者会把耦合偷偷塞回来。
| 场景 | 是否适合 |
|---|---|
| 跨服务的状态变更通知(下单 → 库存/支付/通知) | ✅ 非常适合 |
| 需要行为审计 / 回放 / 复原的业务 | ✅ 考虑事件溯源 |
| 读写模式严重分离(写少读多 + 复杂视图) | ✅ 考虑 CQRS |
| 强一致性 + 低延迟事务 | ❌ 用同步调用 + 本地事务 |
| 简单 CRUD 系统,无跨边界协同 | ❌ 引入复杂度不划算 |
OrderPlaced、PaymentConfirmed、UserDeactivated。CreateOrder(这是命令)、ProcessPayment(这是 RPC)。InventoryDeducted 优于 StockChanged。每个事件必须包含:
| 字段 | 说明 |
|---|---|
eventId | 全局唯一 ID(UUID),用于去重 |
eventType | 事件类型(如 OrderPlaced) |
eventVersion | 事件 schema 版本(语义化版本) |
occurredAt | 事件发生时间(ISO 8601,带时区) |
aggregateId | 所属聚合根 ID(如订单号) |
payload | 业务数据(仅包含事件发生时的不变事实,非指针) |
metadata | 追踪信息(correlationId、causationId、userId) |
eventVersion。| 需求 | 推荐 |
|---|---|
| 高吞吐、持久化、回放 | Kafka / Pulsar |
| 低延迟、轻量 | NATS / Redis Streams |
| 简单队列 + 重试 | RabbitMQ / SQS |
| 云原生托管 | SNS+SQS / EventBridge / Pub/Sub |
eventId 作为幂等键,消费前查重。OrderRefunded)。aggregateId)保证单一分区。| 能力 | Java | Python | Go | Node.js |
|---|---|---|---|---|
| Kafka 客户端 | spring-kafka / kafka-clients | aiokafka / confluent-kafka | franz-go / sarama | kafkajs |
| Outbox 模式 | Debezium CDC | Debezium CDC | Debezium CDC | Debezium CDC |
| Schema Registry | Confluent Avro / Protobuf | 同左 | 同左 | 同左 |
| 事件存储(ES) | axon-framework / EventStoreDB | eventsourcing | 自实现 + PG | node-eventstore |
| 反模式 | 问题 | 修正 |
|---|---|---|
| 事件承载「指令」 | 生产者跨边界支配消费者 | 重命名为过去时,仅描述事实 |
| 把事件当 RPC 返回值 | 消费者等待「响应事件」 | 用同步接口或 saga/流程管理器 |
| 事件 payload 引用外部可变状态 | 回放时读到错误数据 | 事件中固化事实快照 |
| 单分区瓶颈 | 为保证全局有序导致吞吐失败 | 按聚合分区,放弃跨聚合全局有序 |
| 无 Schema Registry | 生产者改字段,消费者崩溃 | 引入 schema 注册与兼容性校验 |
| 忽视死信队列(DLQ) | 坏消息反复重试拖死消费者 | DLQ + 告警 + 人工处置工具 |
eventId / eventVersion / occurredAt / aggregateId。