redis过期事件回调案例一

需求:任务下发后,在规定时间内必须处理,否则将从任务列表从新下发,再次下发。假设现有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()+"失效");

                    //失效后业务逻辑
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值