由于公司订餐平台,有个用户催单业务,每当用户点击催单按钮时,商家就会收到消息提示,如果用户频繁的发起催单请求,这样商家就会不停的收到消息提醒,所以想限制用户至少每隔15分钟才可以催单一次 我采取了以下解决方式

用redis 解决这个问题 代码如下

private static final String keyword_order_orderNo = "order:reminder:orderNo";//key 
    /**
* 删除少于当前 前15分钟的数据
* @param key
*/
private void deleteExpired(String key) {
try {
long currentTime = System.currentTimeMillis() / 1000;
jedisClient.zremrangeByScore(key, 0, currentTime - (15 * 60));
} catch (Exception e) {
e.printStackTrace();
}
}
    /**
* 入口
*/
@RedisSubscribe(channel = "order:message:reminder")
public void entrance(String channel, String message) {
LOGGER.info("SendOrderReminderListener:[{}]", message);
try {
Order order = JSON.parseObject(message, Order.class);
deleteExpired(keyword_order_orderNo);
Double zscore = jedisClient.zscore(keyword_order_orderNo, order.getOrderNo());
if (zscore == null) {//15分钟过后才可以执行该方法
sendOrderReminder(order);
jedisClient.zadd(keyword_order_orderNo, new Date().getTime() / 1000,
order.getOrderNo());
}
} catch (Exception e) {
LOGGER.error("用户催单模板消息出错啦", e);
}
}

java 限制每隔15分钟才允许执行一次程序的更多相关文章

  1. quartz 每天0点5分开始,以后每隔15分钟启动一次,23:50停止

    quartz 每天0点5分开始,以后每隔15分钟启动一次,23:50停止,这个表达式怎么写? 5 用quartz做定时器,要求达到这样的效果每天0点5分开始,以后每隔15分钟启动一次,23:50停止不 ...

  2. 用ab每隔30分钟并发一次休息10分钟

    linux脚本监控程序运行情况(重启程序)主要有两种情况:一种是一个可执行文件:如shell脚本文件:另一种是使用python打开的多个程序.第一种:它的进程名字由路径名字和程序名字组成,比如:我有个 ...

  3. 【Java】15分钟快速体验阿里Java诊断工具Arthas

    [墙裂推荐]15分钟快速体验阿里Java诊断工具Arthas : https://alibaba.github.io/arthas/arthas-tutorials?language=cn&i ...

  4. mysql查超过15分钟未付款的订单,更新为失效状态

    个人打开自己的订单时,才检查超过15分钟未付款的订单, 暂不使用机器人,更新状态, Difference counter 差分计数器订单超过15分钟.mysql的时间戳差分比较 $sql =  TIM ...

  5. Oracle 每隔5分钟产生2个clsc*.log文件

    环境: OS:HP-UNIX 数据库:11.2.0.4   双机RAC (一)现象 在清理Oracle日志的时候,发现在$ORACLE_HOME/log/{instance_id}/client下面存 ...

  6. 15分钟理解HTTPS——通俗篇

    | 导语 它很深奥吗?你肯定常常见过它,使用它,甚至离不开它... 它很浅显吗?你可能觉得看透它,理解它,甚至懂它... 让我们用15分钟,不那么学术地将它的深挖到底~ 什么?如何证明我是我?本文要上 ...

  7. Android BaseAdapter加载多个不同的Item布局时出现UncaughtException in Thread main java.lang.ArrayIndexOutOfBoundsException: length=15; index=15

    java.lang.ArrayIndexOutOfBoundsException: length=15; index=15 异常出现的场景:在做聊天界面时,需要插入表情,图片,文字,名片,还有几种较为 ...

  8. CentOS7设置定时任务 每隔30分钟执行一次命令

    ref   https://blog.csdn.net/xiangxianghehe/article/details/78149094 一.安装 crontabs服务并设置开机自启: yum inst ...

  9. 15 分钟学会 Eclipse GMF

    背景 坦白说:过去在 Eclipse 里使用 Graphical Editor Framework(GEF)创建图形化编辑器 既慢又痛苦.这个过程包括理解复杂的框架和大量的冗余代码.但也说明 GEF ...

随机推荐

  1. opencv3.3 基础:Mat类里setTo函数

    Mat& setTo(InputArray value, InputArray mask=noArray()); 说明: 1.功能:把矩阵mask中元素不为0的点全部变为value值: 2.当 ...

  2. 在UTF-8页面中引入编码为GBK的JavaScript文件乱码问题了

    原文地址:http://js8.in/2009/12/11/%E5%AF%B9%E5%BC%95%E7%94%A8%E5%A4%96%E9%83%A8javascript%E9%A1%B5%E9%9D ...

  3. MVC5+EF6 入门完整教程1 :从0开始

    https://www.cnblogs.com/miro/p/4030622.html 第0课 从0开始 ASP.NET MVC开发模式和传统的WebForm开发模式相比,增加了很多"约定& ...

  4. SpringBoot自学的第1天——寻找模板引擎Thymeleaf

    第一步:先进入spring官网 https://spring.io/ 第二步:进入spring官网后找到导航栏上的Projects——>SpringBoot点击进去 第三步:点击——>LE ...

  5. Lose it!

    You are given an array aa consisting of nn integers. Each aiai is one of the six following numbers:  ...

  6. 安装Docker:解决container-selinux >= 2.9问题

    1.安装Docker要求Centos内核版本高于3.10:通过uname  -r查看当前系统的内核版本 uname  -r 2.使用root登陆系统,确保yum包保持更新到最新: sudo yum  ...

  7. 【Python】 基础语法

    Python 语言与 Perl,C 和 Java 等语言有许多相似之处.但是,也存在一些差异. 第一个 Python 程序  欢迎,入坑! Python 标识符 在 Python 里,标识符由字母.数 ...

  8. 每天进步一点点------创建Microblaze软核(一)

    在使用FPGA时,有时会用到它做为主控芯片.对于习惯于单片机及C语言开发的人,使用FPGA做主控芯片,首先还是想到它的嵌入式软核功能.如果能够基于Microblze软核进行C语言程序的开发,相对于使用 ...

  9. 题解 UVA1335 【Beijing Guards】

    UVA1335 Beijing Guards 双倍经验:P4409 [ZJOI2006]皇帝的烦恼 如果只是一条链,第一个护卫不与最后一个护卫相邻,那么直接贪心,找出最大的相邻数的和. 当变成环,贪心 ...

  10. vue 项目太大, 导致 javascript heap out of memory

    原因: node 环境, 对单个进程的内存是有限制的, 但是现在前端项目太大, 所以我们需要根据当前机器环境, 手动加大node的内存限制 安装包 npm i increase-memory-limi ...