SuperAPI AI 工具集

loom-event-driven

通用与其它

查看项目

更新于 10-15 20:28

技能介绍

用途:该技能整理通过事件而非同步调用解耦服务的事件驱动架构(EDA)模式,包括消息队列、发布/订阅、事件溯源、CQRS、saga 与流式处理。范围是架构本身及其分布式系统陷阱(投递语义、顺序、发件箱、模式演进);作业队列机制(工作池、调度、重试内部实现、通用死信队列管道)请参考 loom-background-jobs,交叉引用而非重复。

核心原则:网络投递是至少一次,因此每个消费者必须幂等。投递语义分三类:至多一次(先确认后处理,崩溃丢消息,适合指标/遥测);至少一次(处理后确认,重试产生重复,是重要场景默认);“恰好一次”并非传输保证,而是由至少一次投递、幂等消费者与去重存储共同实现的效果。Kafka 的 EOS 仅限 Kafka 内部,不覆盖数据库写入、邮件、扣款等外部副作用。

主要能力:幂等消费者(按稳定消息 ID 或业务键去重,缓存结果使重复返回同一答案);事务性发件箱解决双写问题(在同一本地事务中写状态与 outbox 表,由轮询发布器或 CDC 中继发布);顺序仅保证分区/键内,需选高基数均匀分区键,注意热分区、消费者并行度上限与重试乱序;胖事件与瘦事件的耦合/陈旧权衡;代理选型(Kafka、RabbitMQ、Pulsar、SQS+SNS、NATS JetStream、Redis Streams);毒丸与死信策略(有界重试加退避、DLQ 元数据、告警与重放工具);竞争消费者工作分发。

使用方式:代码示例为 TypeScript,模式与语言无关。示例假定 crypto.randomUUID()、代理客户端与数据存储可用。Kafka 生产者启用 idempotent 并设 maxInFlightRequests;消费者按逻辑订阅者分组,处理成功后手动提交偏移。SQS 循环中删除即确认,不删除则在可见性超时后重投,RedrivePolicy 自动路由 DLQ。

限制:资料未提供安装命令、收费、价格与平台信息。Kafka 无原生 DLQ,需自行实现有界重试后发往错误主题;去重窗口须覆盖最坏重投年龄;检查后执行存在竞态,优先使用带唯一业务键的原子写入。