vlambda博客
学习文章列表

10. Springboot整合Redis事件监听实现定时功能

✎  前言  


最近新写了个定时的任务,就是前端用户设置一个时间,然后时间到了来触发调用这个程序,想了很多办法,后来就用到了redis监听来实现这一功能。





废话不多,直接上代码实例:

如果有不会在项目中用redis的小伙伴可以看上一篇文章。

/*redis监听过期时间设置*/
@Configuration
public class RedisConfiguration {

@Autowired
private RedisConnectionFactory redisConnectionFactory;
@Bean
public RedisMessageListenerContainer redisMessageListenerContainer() {
RedisMessageListenerContainer redisMessageListenerContainer = new RedisMessageListenerContainer();
redisMessageListenerContainer.setConnectionFactory(redisConnectionFactory);
return redisMessageListenerContainer;
}

@Bean
public KeyExpiredListener keyExpiredListener() {
return new KeyExpiredListener(this.redisMessageListenerContainer());
}


}


10. Springboot整合Redis事件监听实现定时功能



public KeyExpiredListener(RedisMessageListenerContainer listenerContainer) {
super(listenerContainer);
}

@Override
public void onMessage(Message message, byte[] pattern) {

System.out.println("过期key:" + message.toString());
String inquiryEnquiryNumber = new String(message.getBody());
//key值为CLEAN+设备编号
if(inquiryEnquiryNumber.startsWith("CLEAN")) {

}
}

监听所有失效的key值,然后把它转化为String类型,获取字符串开头是否为CLEAN如果是的话,就可以在里面写方法调用该方法。


10. Springboot整合Redis事件监听实现定时功能



实现思路:

实现这个功能就是把用户传入的时间转化为秒存入redis,当这个key失效的时候就说明时间到了然后就触发调用方法程序。



10. Springboot整合Redis事件监听实现定时功能


 总结:前端传入后台一个时间,后端根据当前时间和传的时间判断之间相差多少秒,然后把这个时间设置为过期时间存入redis,等redis中这个时间到了,就在监听中调用方法,执行相对应的程序。




10. Springboot整合Redis事件监听实现定时功能

End



关注我们




不点关注,我们哪来故事?