用途:该技能用于设计和实现通过异步消息传递解耦服务的事件驱动系统,适合构建微服务架构、实现分布式工作流、以异步事件替代同步服务间调用,以及处理最终一致性场景。
主要能力:覆盖消息中间件选型与集成(Kafka、RabbitMQ、SQS/SNS、NATS)、事件溯源与 CQRS、用于分布式事务的 Saga 编排、失败处理的死信队列、幂等模式、事件模式演进、事务性发件箱模式与消费者组管理。
核心原则:事件是事实,命令是请求;事件广播,命令点对点。消息至少投递一次,消费者必须优雅处理重复消息,可用事件 ID、版本检查或数据库约束去重。事件模式需向后兼容演进,只增字段,不删不改名,并显式版本化。死信不是垃圾,需监控、告警并支持重放。各服务在本地事务内处理事件,跨服务一致性是最终一致。
选型参考:Kafka 适合高吞吐事件流与日志压缩,按分区保序;RabbitMQ 适合任务队列、路由与请求-应答,按队列保序;SQS/SNS 适合无服务器与 AWS 原生低运维场景,FIFO 队列保序;NATS 适合低延迟、云原生轻量场景,JetStream 提供持久化。
反模式:数据库与事件双写而无发件箱会导致数据不一致,应使用事务性发件箱;消费者无幂等会重复处理,应按事件 ID 在同一事务内去重;事件负载过大应改为发送引用;同步处理事件违背异步初衷;未配置死信队列会使失败消息阻塞或丢失;事件模式紧耦合会破坏消费者;多处发布领域事件应统一发布点。
检查清单:事务性发件箱、消费者幂等、死信队列与告警及重放工具、模式版本化、消费者组、指数退避重试、Saga 或编排、监控消费者延迟与死信深度、按需保序、中间件集群容错。
限制:资料未提供具体安装命令、代码示例、收费与平台支持信息,暂未提供。