zoukankan      html  css  js  c++  java
  • java 限制每隔15分钟才允许执行一次程序

    由于公司订餐平台,有个用户催单业务,每当用户点击催单按钮时,商家就会收到消息提示,如果用户频繁的发起催单请求,这样商家就会不停的收到消息提醒,所以想限制用户至少每隔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);
            }
        }
  • 相关阅读:
    lea
    DIV指令
    html基础
    浮点计算结果误差,以及解决方法
    java的threadLocal类
    java多线程基础总结
    sql反模式读书笔记 (持续更新)
    pdb 调试初步
    面向对象设计原则与总结 (持续更新)
    @servcie注解基本用法
  • 原文地址:https://www.cnblogs.com/SHMILYHP/p/9958907.html
Copyright © 2011-2022 走看看