幂等请求/消息处理

问题描述

我正在尝试使用以下模式实现幂等请求:

  1. 创建或查找幂等键并确定是否为重试

  2. a) 如果不重试,则处理

    b) 如果重试 && 结束状态 => 返回保存的幂等响应

    c) 如果重试且可重试 => 处理

  3. 坚持

现在我在处理并发方面有点不知所措:

  1. 两个请求同时进来并尝试插入幂等键。我是否处理 Uniquekeyviolation 并使用 409 - Conflict 丢弃违规请求?我是否执行插入 SERIALIZABLE 的整个事务并使用 409 而不是 Uniquekeyviolation 处理错误?问题是处理的结果可能会发送到错误的请求(单击按钮两次,第一个请求开始处理,但第一个请求甚至不再存在,用户只得到 409)。

  2. 两个并行请求来读取幂等键并查看状态是否可重试。我是否 SELECT FOR UPDATE 键,并在所有处理完成后通过提交释放锁?否则两个进程可能会尝试重试

总结一下:如果这样的记录已经存在,如何防止多个进程并行插入密钥和/或重新启动。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)