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);
        }
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM