微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

幂等请求/消息处理

如何解决幂等请求/消息处理

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

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

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

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

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

  3. 坚持

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。