前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Thread.sleep 延时查询或延时查询前更新es缓存数据

Thread.sleep 延时查询或延时查询前更新es缓存数据

作者头像
oktokeep
发布于 2024-10-09 02:47:57
发布于 2024-10-09 02:47:57
10900
代码可运行
举报
文章被收录于专栏:第三方工具第三方工具
运行总次数:0
代码可运行

Thread.sleep 延时查询或延时查询前更新es缓存数据

MQ消息的顺序性,或发送MQ的发送端未严格事务处理,可能存在数据未落库的情况,而导致接收端处理MQ消息的时候,查询为空。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//demo1 订单
            Order Order = OrderMapper.getOrder(orderNo);
            if (Order == null) {
                //延时3秒
                try {
                    Thread.sleep(3000);
                } catch (InterruptedException e) {
                    log.error("查询Order延时3秒异常:orderNo=[{}]",e,orderNo);
                }
                Order = OrderMapper.getOrder(orderNo);
                if (Order == null) {
                    throw new RuntimeException("Order is null , orderNo = " + orderNo);
                }
            }

        //demo2 查询es
        Order bo = orderSearchService.detail(orderNo);
        if(bo == null){
            //es尝试刷新一次
            List<String> orderNoList = Arrays.asList(orderNo);
            orderSearchService.refresh(orderNoList);
            Thread.sleep(3000);
            //重新查询
            bo = orderSearchService.detail(orderNo);
            if(bo == null){
                logger.info("es查询订单信息Order is null , orderNo = " + orderNo);
                return content;
            }
        }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-03-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
支付渠道回调出问题如何主动查询 延时任务 ScheduledExecutorService
支付渠道回调出问题如何主动查询 延时任务 ScheduledExecutorService 
oktokeep
2025/03/25
660
使用Redis实现延时任务(二)
前一篇文章通过Redis的有序集合Sorted Set和调度框架Quartz实例一版简单的延时任务,但是有两个相对重要的问题没有解决:
Throwable
2020/06/23
1.1K0
使用Redis实现延时任务(二)
延迟任务多种实现姿势--上
例如:pdd下单,但是没有付款,那么24小时候,订单会自动取消。收货后,如果一直不进行确认,那么默认七天后自动确认收货等等。
大忽悠爱学习
2022/09/29
5340
延迟任务多种实现姿势--上
【小家Java】Future、FutureTask、CompletionService、CompletableFuture解决多线程并发中归集问题的效率对比
开启线程执行任务,不管是使用Runnable(无返回值不支持上报异常)还是Callable(有返回值支持上报异常)接口,都可以轻松实现。那么如果是开启线程池并需要获取结果归集的情况下,如何实现,以及优劣?
YourBatman
2019/09/03
2.6K1
【小家Java】Future、FutureTask、CompletionService、CompletableFuture解决多线程并发中归集问题的效率对比
Redis学习笔记之延时队列
这些情况都可以使用延时队列来做,实现延时队列比较场景的有使用消息队列MQ来实现,比如RocketMQ等等,也可以使用Redis来实现,本博客主要介绍一下Redis实现延时队列
SmileNicky
2019/03/11
2.3K0
分布式事务的案例分析
1、用户提交订单需要先登录系统 2、提交订单,订单信息保存到订单数据库 3、订单支付,调用微信支付接口完成支付 4、完成支付,微信支付系统通知学成在线支付结果 5、学成在线接收到支付结果通知,更新支付结果 提交订单流程:
botkenni
2023/03/01
5660
分布式事务的案例分析
畅购第十四天rabbitmq 延时队列
用户每次抢单的时候,一旦排队,我们设置一个自增值,让该值的初始值为1,每次进入抢单的时候,对它进行递增,如果值>1,则表明已经排队,不允许重复排队,如果重复排队,则对外抛出异常,并抛出异常信息100表示已经正在排队。
周杰伦本人
2022/10/25
8090
畅购第十四天rabbitmq 延时队列
一口气说出 6种 延时队列的实现方案
五一期间原计划是写两篇文章,看一本技术类书籍,结果这五天由于自律性过于差,禁不住各种诱惑,我连电脑都没打开过,计划完美宣告失败。所以在这能看出和大佬之间的差距,人家没白没夜的更文,比你优秀的人比你更努力,难以望其项背,真是让我自愧不如。
程序员小富
2020/05/08
2.2K0
一口气说出 6种 延时队列的实现方案
使用Redis实现延时任务(一)
最近在生产环境刚好遇到了延时任务的场景,调研了一下目前主流的方案,分析了一下优劣并且敲定了最终的方案。这篇文章记录了调研的过程,以及初步方案的实现。
Throwable
2020/06/23
1.4K0
使用Redis实现延时任务(一)
分布式事务就是这么简单之RocketMQ解决方案
​ 现在比较流行的分布式架构而言,它虽然带来一系列好处,比如支持高并发,高可用集群。同时它也带来一系列的挑战,今天我们将的就是其中一种挑战 - 分布式事务。
yukong
2019/07/28
3.3K0
redis锁和等待锁随机毫秒数解决程序调用方控制执行的先后顺序,避免并发操作造成的数据不一致
redis锁和等待锁随机毫秒数解决程序调用方控制执行的先后顺序,避免并发操作造成的数据不一致
oktokeep
2024/11/28
1200
缓存 - Caffeine 不完全指北
https://github.com/ben-manes/caffeine/wiki
小小工匠
2023/07/24
1.6K0
缓存 - Caffeine 不完全指北
C#/.NET 中 Thread.Sleep(0), Task.Delay(0), Thread.Yield(), Task.Yield() 不同的执行效果和用法建议
在 C#/.NET 中,有 Thread.Sleep(0), Task.Delay(0), Thread.Yield(), Task.Yield() 中,有几种不同的让当前线程释放执行权的方法。他们的作用都是放弃当前线程当前的执行权,让其他线程得以调度。但是他们又不太一样。
walterlv
2023/10/22
1.5K0
C#/.NET 中 Thread.Sleep(0), Task.Delay(0), Thread.Yield(), Task.Yield() 不同的执行效果和用法建议
阻塞队列概念及其简单使用
LinkedBlockingQueue:按照先进先出的原则,可以不设置初始大小,不设置,默认就会Integer.MAX_VALUE
彼岸舞
2021/01/21
4490
Java 编程问题:十一、并发-深入探索
本章包括涉及 Java 并发的 13 个问题,涉及 Fork/Join 框架、CompletableFuture、ReentrantLock、ReentrantReadWriteLock、StampedLock、原子变量、任务取消、可中断方法、线程局部、死锁等方面。对于任何开发人员来说,并发性都是必需的主题之一,在工作面试中不能被忽视。这就是为什么这一章和最后一章如此重要。读完本章,您将对并发性有相当的了解,这是每个 Java 开发人员都需要的。
ApacheCN_飞龙
2022/07/11
1.1K0
Java 编程问题:十一、并发-深入探索
为什么分布式一定要有延时任务?
作者:孤独烟 来自:cnblogs.com/rjzheng/p/8972725.html 0 引言 在开发中,往往会遇到一些关于延时任务的需求。例如 生成订单30分钟未支付,则自动取消 生成订单60秒后,给用户发短信 对上述的任务,我们给一个专业的名字来形容,那就是延时任务。那么这里就会产生一个问题,这个延时任务和定时任务的区别究竟在哪里呢?一共有如下几点区别 定时任务有明确的触发时间,延时任务没有 定时任务有执行周期,而延时任务在某事件触发后一段时间内执行,没有执行周期 定时任务一般执行的是批处理操作是多
架构师小秘圈
2018/06/04
2.6K0
CMS-Spring Task定时任务
根据分布式事务的研究结果,订单服务需要定时扫描任务表向MQ发送任务。本节研究定时任务处理的方案,并实 现定时任务扫描任务表并向MQ发送消息。
cwl_java
2020/01/14
3970
集群部署中解决定时任务重复执行的问题-redis分布式锁应用
概述:之前的项目都是单机器部署,所以定时任务不会重复消费,只会执行一次。而在集群环境部署下,比如两台机器部署了当前的项目,如果不做任何处理的话势必会执行两次,通常重复执行会影响现有数据。所以要解决的就是在某个时间点,只能让一个项目执行这个定时任务。
代码伴一生
2021/09/19
1.9K0
Mybatis系列第7篇:各种查询详解
Mybatis系列目标:从入门开始开始掌握一个高级开发所需要的Mybatis技能。
路人甲Java
2020/02/11
6940
数据异构重器之 Canal 初探
提到 Canal,大家应该都能想到这是一个用于解析 MySQL binlog 日志的工具,并将 MySQL 数据库中数据同步到其他存储介质中,例如 Elasticsearch。
丁威
2020/06/16
1.4K0
数据异构重器之 Canal 初探
推荐阅读
相关推荐
支付渠道回调出问题如何主动查询 延时任务 ScheduledExecutorService
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文