返回工作流常见问题
帮助中心 · 常见问题工作流1 分钟阅读

如何避免工作流重复处理同一个事件?

设计事件处理时应容忍重复投递,而不是假设每个事件只会到达一次。稳定的事件 ID、持久化处理记录和幂等结果可以识别重复项,避免重复执行外部副作用。

工作流

选择去重键

如果来源提供的事件 ID 唯一且稳定,可直接使用;否则从能标识同一业务事件的字段组合生成键。不要只用到达时间或过于宽泛的实体 ID,以免漏掉重复项或合并不同更新。

在存储模型允许时,将去重键和处理状态与业务结果原子地持久化。根据延迟重试和重放窗口,明确去重记录需要保留多久。

让重试变得安全

发送消息、创建付款或修改外部记录前,检查对应副作用是否已完成,或使用目标系统支持的幂等机制。工作流重启后应能从已记录进度继续。

测试重复、延迟和乱序事件,包括两个工作进程同时接收同一事件的情况。监控去重命中和被拒绝事件,避免错误的去重键悄然丢弃合法工作。

返回工作流常见问题