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