• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

redis过期事件回调案例一

武飞扬头像
长风千里
帮助1

需求:任务下发后,在规定时间内必须处理,否则将从任务列表从新下发,再次下发。假设现有10个可处理任务,有下级单位领取任务,甲单位领取后,任务数10-1=9。但是超过规定时长未处理。则任务回归未下发状态、总结有两种实现方案,第二种参考之前网上学习过的一个订单超时未支付的解决方案,刚好解决本次需求。如果有类似场景,可以稍加调整套用,推荐第二种

1、定时任务轮询,规定时间内验证任务状态是否为已完成或已终止

2、采用redis ,key有效期回调事件实现

  1. 为每笔任务单绑定一个token,设置有限期为30分钟

     key=aaaa-bbbb-cccc value=123456

    对该key绑定过期事件回调,执行回调方法

Redis中配置开启过期回调监听

notify-keyspace-events "Ex"

springboot配置

@Configuration
public class RedisListenerConfig {
    @Bean
    RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) {
        RedisMessageListenerContainer container = new RedisMessageListenerContainer();
        container.setConnectionFactory(connectionFactory);
        return container;
    }
}

@Component
public class RedisKeyExpirationListener extends KeyExpirationEventMessageListener {
    public RedisKeyExpirationListener(RedisMessageListenerContainer listenerContainer) {
        super(listenerContainer);
    }


    /**
     * Redis失效事件 key
     *
     * @param message
     * @param pattern
     */
    @Override
    public void onMessage(Message message, byte[] pattern) {
                  
  System.out.println(message.toString() "失效");

                    //失效后业务逻辑
    }
}

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgakkea
系列文章
更多 icon
同类精品
更多 icon
继续加载