日前拜读阿牛老师的大作 领导:谁再用定时任务实现关闭订单,立马滚蛋! 发现其方案有若干瑕疵,特此抛砖引玉讨论一二. 在电商.支付等领域,往往会有这样的场景,用户下单后放弃支付了,那这笔订单会在指定的时间段后进行关闭操作,细心的你一定发现了像某宝.某东都有这样的逻辑,而且时间很准确,误差在1s内:那他们是怎么实现的呢? 一般实现的方法有几种: 使用 rocketmq.rabbitmq.pulsar 等消息队列的延时投递功能 使用 redisson 提供的 DelayedQueue 有一些方案虽然广…
https://blog.csdn.net/qq_37334135/article/details/77717248 通常在网上买好物品,或者说手机扫码后,点击付款,这时就会向后台发送请求,生成订单信息,以及够买商品的信息存入到数据库对应的表比如:订单表和商品销售表,或者还有物流信息表等.简单起见,就拿扫码购物来说,这里就不需要物流信息表了,只需要订单表,商品销售表,而且一次只能买一个商品,对应生成一个订单. 注:这里用到的是spring data +redis,也用到了spring data…
我使用的是Windows下的Redis服务,所以一下Redis设置都是在Windows平台进行. 1.修改Redis配置文件 1.1:Windows下的Redis存在两个配置文件 修改带有service的配置文件才会有效. 打开配置文件,找到下面一行代码: notify-keyspace-events "" 然后修改配置,如下图配置: 很简单,替换注释一下就好. 2.重启Redis服务 重启Redis服务有两种方式: 1.直接win+R,打开运行对话框,输入Services.msc,打…
作者:迪壳 https://juejin.im/post/6844904158227595271 Redis 过期监听场景 业务中有类似等待一定时间之后执行某种行为的需求 , 比如 30 分钟之后关闭订单 . 网上有很多使用 Redis 过期监听的 Demo , 但是其实这是个大坑 , 因为 Redis 不能确保 key 在指定时间被删除 , 也就造成了通知的延期 . 不多说 , 跑个测试 测试情况 先说环境 , redis 运行在 Docker 容器中 , 分配了 一个 cpu 以及 512M…
最近几天进一步了解了一下redis,发现了key的过期监听功能,实现方式如下: 在redis的配置文件 redis.conf 中找到"EVENT NOTIFICATION"模块, 解开注释 notify-keyspace-events Ex :或者在这个模块后增加 notify-keyspace-events Ex . 来开启key的过期监听, 因为redis默认是关闭的. 然后在spring boot 项目中添加配置类代码如下: @Configuration public class…
前言 我们可以在redis中发布一条订阅到通道中,所有监听了这个通道的都可以收到这个发布的内容! redis订阅监听配置类 代码如下: RedisListenerConfig.java package com.wzq.redis.config; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.s…
面板Panel的使用 待解决问题: 1.设计模式:适配器模式 2.frame.setLayout(null); package GUI; import javax.swing.*; import java.awt.*; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; // Panel 可以看成一个空间,不能单独存在,可以嵌套在…
使用Runtime的addShutdownHook(thread)方法: for(int i=0; i<5; i++){ System.out.println(i); } Thread th = new Thread(new Runnable() { @Override public void run() { System.out.println("jvm结束了..."); } }); //设置监听线程 Runtime.getRuntime().addShutdownHook(t…
JS可以监听浏览器页面的关闭,主要使用了window对象的onbeforeunload方法 在以前(旧版本的浏览器中),可以自定义提示文案 window.onbeforeunload = function (e) { var message = 'some word'; e = e || window.event; if (e) { e.returnValue = message; } return message; }; 但在新版本的浏览器中,为了安全性,已经不支持自定义弹窗 诸如自定义实现“…
假设有如下界面(输入法的上面的输入区域是用Dialog实现的) 要求当输入法关闭的时候,Dialog也一起关闭,这样用户就不需要返回两次了. 网上找了很多资料都没有很好的解决这个问题,输入法是第三方程序,确实不好检测它的关闭与显示. 后来在EditText源码中看到 public boolean onKeyPreIme(int keyCode, KeyEvent event){ } 对该方法官方文档: Handle a key event before it is processed by an…