最近上线了一个下单平台项目,需要定时将线下的订单也推送过去,但对于补偿机制,当时是简单的进行定时,每隔15分钟拉取所有的未推送记录(包含上次未推成功的),放入MQ中,在消费端进行数据推送。---在消费端有另一套数据一致性机制,这里可以默认只要放入MQ,即可认定数据推送成功。

项目验收时,外请专家建议将定时机制优化,每次重试失败,下次应该隔更长时间推送,比如下次是上次的2倍,以2的N次幂进行重试,但会后询问落地方案,他也没给,只能下来慢慢琢磨,就有了这个方案:

1、线下记录表增加两个字段,推送是否成功字段status,推送次数字段reload_count,表中已有记录创建时间ins_time

2、设置筛选条件:当前时间 - 创建时间 >= 2的n次幂 * 初次间隔时长

3、定时机制仍不变,但每次定时触发的查询方法要加上上面的筛选条件

之前查询语句:

SELECT oh.*

ta_combine_order_hdr oh

where oh.`status`=2

and oh.ask_type = 1

limit 200

修改为:

SELECT oh.*

ta_combine_order_hdr oh

where oh.`status`=2

and UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(oh.ins_time) >= POW(2,oh.reload_count) *10

and oh.ask_type = 1

limit 200

这样能每次拉取时,都能根据当前时间和创建时间的间隔,做个过滤,一些刚重试的数据,要等待更长的时间再重试发起。

java 事务补偿机制_重试补偿机制完善相关推荐

  1. java 沙箱机制_浅析沙箱机制(Sandboxie)

    每个人都可能听说过以太坊的智能合约正在沙盒中运行.那沙盘究竟是什么?本文将带您了解这种机制的奥秘. 1.为什么需要沙盒机制? 默认情况下,应用程序可以访问计算机上的所有资源,例如CPU,内存,文件系统 ...

  2. java 为什么双亲委派_双亲委派机制及使用原因是什么?

    双亲委派机制大家知道是什么吗?相信都挺耳熟吧,今天我们就来了解一下到底什么是双亲委派机制及它的使用原因吧. 一.什么是双亲委派机制? 当某个特定的类加载器它在接到需要加载类的请求时,这个类会首先查看自 ...

  3. java udp心跳机制_心跳包机制整理汇总

    [背景] 现需要实现这样的功能:有多个客户端连着同一个服务器.服务器和客户端之间需要"互相"知道彼此的连接状态.比如在某一时刻,服务器需要知道当前有多少个客户端正在和其通信:某一个 ...

  4. 自注意力机制_自注意力机制在计算机视觉中的应用【附PPT与视频资料】

    关注微信公众号:人工智能前沿讲习回复"蒋正锴"获取PPT与视频资料视频资料可点击下方阅读原文在线观看 导读 在神经网络中,我们知道卷积层通过卷积核和原始特征的线性结合得到输出特征, ...

  5. 建立完善的员工晋升机制_员工晋升机制

    员工晋升机制 第一章 总 则 一.目的 为了达到人尽其才.各尽其能,赛马不相马,让本公司职业晋升通道畅通 , 满 足公司和员工个人发展需要,提高公司和员工个人的核心竞争力,特制定本规定. 二.范围 适 ...

  6. java 异常补偿解决_第三方接口调用异常补偿机制实现实例记录

    背景: 我们的组件(简称A),在业务链中属于数据支撑节点.其中与组件B存在接口同步数据的直接关系(API接口直接调用进行数据交互) 问题: 我们的上游有另一个组件C(带有界面),调用A(us)进行数据 ...

  7. Python--方法或函数重试补偿机制

    痛点分析 在实际业务开发中,我们开发人员可能面临一个问题针对部分重要业务场景需要尽可能保障业务顺畅流转,那就需要保证这些重要业务场景涉及到的接口底层方法处理时不会因为网络抖动而中断(其他原因不在本篇文 ...

  8. Redis 学习笔记-NoSQL数据库 常用五大数据类型 Redis配置文件介绍 Redis的发布和订阅 Redis_事务_锁机制_秒杀 Redis应用问题解决 分布式锁

    1.NoSQL数据库 1.1 NoSQL数据库概述 NoSQL(NosQL = Not Only sQL ),意即"不仅仅是sQL",泛指非关系型的数据库.NoSQL不依赖业务逻辑 ...

  9. loadingcache 有重试机制吗_重试机制的实现

    服务在请求资源,如果遇到网络异常等情况,导致请求失败,这时需要有个重试机制来继续请求. 常见的做法是重试3次,并随机 sleep 几秒. 业务开发的脚手架,HTTP Client 基本会封装好 ret ...

最新文章

  1. c语言前置函数,C语言高级编程-函数前置与后置调用
  2. Testner自动化测试平台免费开放啦
  3. [nodejs]国内npm安装nodejs modules失败的几个解决方案
  4. 从1.5k到18k, 一个程序员的5年成长之路 2019-03-15
  5. 猴子数据让你深刻了解微信富媒体
  6. SSH学习之MVC和三层架构的区别
  7. Gantt - attachEvent事件监听 - 一个参数事件
  8. 苹果id可以同时用两个手机吗_苹果手机Apple ID账号的重要性你知道多少?
  9. python 数组的排列与组合:combinations 与 permutations
  10. Oracle字符串操作[转:http://www.cnblogs.com/xd502djj/archive/2010/08/11/1797577.html]
  11. 商汤科技——机器视觉面试
  12. 如何写好软件项目的工作计划(一)
  13. TensorFlow Object Detection API 多GPU 卡平行计算,加速模型训练速度教学
  14. mysql 5.0.8 下载_mysql-connector-
  15. cisco设备接口下配置encapsulation dot1q vlan-id的作用
  16. STL之自定义缓冲区
  17. 设计一个亿级高并发系统架构 - 12306火车票核心场景DDD领域建模
  18. Oracle知识点(一)--创建表
  19. sort函数与结构体
  20. MTK adnroid系统音频参数说明

热门文章

  1. 生成一个袁金龙的2022年年度报告
  2. STM32CubeIDE开发(三), stm32应用开发过程涉及的术语简称表
  3. 电商用户评论情感分析
  4. 怎么用软件测试内存条是否好坏,内存如何检测?Win7检测内存条好坏的方法
  5. 数据补录-shell
  6. Go语言中Time的用法[1]
  7. C语言井字棋电脑相互对战
  8. Python爬虫拓展应用——Selenium代刷问卷星问卷
  9. java.util.set cannot be assigned from null_JDK源码那些事儿之浅析Thread下篇
  10. 惠普288G6台式机如何在 BIOS中设置通电自动开机