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

Canonical URL: https://help.iagenify.com/zh/faqs/workflows/how-can-a-workflow-avoid-processing-the-same-event-twice

[← 返回工作流常见问题](https://help.iagenify.com/zh/faqs/workflows)

帮助中心 · 常见问题 工作流 1 分钟阅读
# 如何避免工作流重复处理同一个事件？
设计事件处理时应容忍重复投递，而不是假设每个事件只会到达一次。稳定的事件 ID、持久化处理记录和幂等结果可以识别重复项，避免重复执行外部副作用。
IaGenify
工作流

## 选择去重键
如果来源提供的事件 ID 唯一且稳定，可直接使用；否则从能标识同一业务事件的字段组合生成键。不要只用到达时间或过于宽泛的实体 ID，以免漏掉重复项或合并不同更新。
在存储模型允许时，将去重键和处理状态与业务结果原子地持久化。根据延迟重试和重放窗口，明确去重记录需要保留多久。
## 让重试变得安全
发送消息、创建付款或修改外部记录前，检查对应副作用是否已完成，或使用目标系统支持的幂等机制。工作流重启后应能从已记录进度继续。
测试重复、延迟和乱序事件，包括两个工作进程同时接收同一事件的情况。监控去重命中和被拒绝事件，避免错误的去重键悄然丢弃合法工作。 [← 返回工作流常见问题](https://help.iagenify.com/zh/faqs/workflows)
