在上一篇Springboot redis多数据源案例中,我们实现了springboot下多数据源的案例。

本篇博客在此基础上,实现多数据源过期监听事件:

监听器配置类:

package com.xinx.redismultidatasource.config.redis;import com.xinx.redismultidatasource.listener.RedisDb1ExpiredListener;
import com.xinx.redismultidatasource.listener.RedisDbExpiredListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.listener.PatternTopic;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
import org.springframework.data.redis.listener.adapter.MessageListenerAdapter;/*** redis过期监听配置类**      redis过期监听配置(如果未测试通过,则程序无法监听到redis key过期事件)*      找到redis.conf文件,修改其中的notify-keyspace-events ""为notify-keyspace-events "Ex"**         测试redis过期监听是否开启成功:**         连接远程redis:*          redis-cli -h [redis服务器ip] -p [redis端口] -a [密码]*         订阅监听事件:*             psubscribe __keyevent@0__:expired**            新启一个客户端:*            setex test_key 3 test_value** @author xinx* @date 2020/9/11 18:04*/
@Configuration
public class RedisExpiredListenerConfig {@Autowiredprivate StringRedisTemplate stringRedisTemplate;@Autowired@Qualifier("redisDbExpiredListener")private RedisDbExpiredListener redisDbExpiredListener;@Autowiredprivate StringRedisTemplate stringRedisTemplate1;@Autowired@Qualifier("redisDb1ExpiredListener")private RedisDb1ExpiredListener redisDb1ExpiredListener;/*** 配置redis过期监听器** @param listenerAdapter* @return*/@Bean@PrimaryRedisMessageListenerContainer container(@Qualifier("listenerAdapter") MessageListenerAdapter listenerAdapter) {RedisMessageListenerContainer container = new RedisMessageListenerContainer();container.setConnectionFactory(stringRedisTemplate.getConnectionFactory());// __keyevent@[redis库索引]__:expiredcontainer.addMessageListener(listenerAdapter, new PatternTopic("__keyevent@0__:expired"));return container;}@Bean("listenerAdapter")@PrimaryMessageListenerAdapter listenerAdapter() {return new MessageListenerAdapter(redisDbExpiredListener);}@BeanRedisMessageListenerContainer container1(@Qualifier("listenerAdapter1") MessageListenerAdapter listenerAdapter1) {RedisMessageListenerContainer container = new RedisMessageListenerContainer();container.setConnectionFactory(stringRedisTemplate1.getConnectionFactory());container.addMessageListener(listenerAdapter1, new PatternTopic("__keyevent@1__:expired"));return container;}@Bean("listenerAdapter1")MessageListenerAdapter listenerAdapter1() {return new MessageListenerAdapter(redisDb1ExpiredListener);}}

过期事件监听器:

package com.xinx.redismultidatasource.listener;import org.springframework.data.redis.connection.Message;
import org.springframework.data.redis.connection.MessageListener;
import org.springframework.stereotype.Component;/*** @author xinx* @date 2020/9/11 18:07*/
@Component("redisDbExpiredListener")
public class RedisDbExpiredListener implements MessageListener {@Overridepublic void onMessage(Message message, byte[] bytes) {System.out.println(this.getClass().getCanonicalName() + "监听key:" + message.toString());System.out.println(new String(bytes));}
}
package com.xinx.redismultidatasource.listener;import org.springframework.data.redis.connection.Message;
import org.springframework.data.redis.connection.MessageListener;
import org.springframework.stereotype.Component;/*** @author xinx* @date 2020/9/11 18:07*/
@Component("redisDb1ExpiredListener")
public class RedisDb1ExpiredListener implements MessageListener {@Overridepublic void onMessage(Message message, byte[] bytes) {System.out.println(this.getClass().getCanonicalName() + "监听key:" + message.toString());System.out.println(new String(bytes));}
}

Springboot redis多数据源过期监听案例相关推荐

  1. springboot集成redis,及过期监听

    redis配置 package cn.jianml.redis.config;import cn.jianml.redis.listener.RedisMessageListener; import ...

  2. redis 超时key过期监听

    1.修改redis配置 过期事件通过Redis的订阅与发布功能(pub/sub)来进行分发. 而对超时的监听呢,并不需要自己发布,只有修改配置文件redis.conf中的:notify-keyspac ...

  3. redis开启过期监听

    java项目中,场景:订单没有付款到期取消订单,使用的是redis过期监听来做的,做个笔记!首先使用该功能需要下载2.8.0及以上的版本,这一部分详细内容可以访问redis官网:http://redi ...

  4. Redis自动过期机制之key的过期监听(7)

    Redis中的自动过期机制 前言 1.使用Redis Key自动过期机制 2.Springboot整合key过期监听 2.1. 创建表 order_number 2.2核心代码 2.2.1 核心代码 ...

  5. redis依赖_请勿过度依赖 Redis 的过期监听

    阅读本文大概需要 5 分钟. 来自:http://juejin.im/post/6844904158227595271 Redis 过期监听场景 业务中有类似等待一定时间之后执行某种行为的需求 , 比 ...

  6. redistemplate hash 过期时间_Redis过期监听——订单超时-取消

    最近在做电商项目,涉及支付超时处理的几种方式.[记录哈使用redis监听处理] 提交订单的时候,支付-超过了有效时间则支付状态自动更新为已取消. 欢迎交流 redis过期监听的实现: 1.修改redi ...

  7. 服务器动态上下线监听案例

    服务器动态上下线监听案例 文章目录 1.需求 2.需求分析 3.编程实现 1.先在集群上创建/servers节点 2.服务器端向Zookeeper注册代码(Server) 3.客户端代码(Client ...

  8. SpringBoot重点详解--事件监听

    目录 自定义事件监听 Springboot 启动事件监听 Springboot 事件监听为 Bean 与 Bean 之间的消息通信提供支持:当一个 Bean 做完一件事以后,通知另一个 Bean 知晓 ...

  9. SpringBoot Redis多数据源配置

    个人博客纯净版 SpringBoot Redis多数据源配置 | 代码搬运工 此处提供了一个SpringBoot starter插件 gitee地址 spring-boot-starter-dynam ...

最新文章

  1. 《重构-改善既有代码的设计》读书笔记(二)
  2. 收集到的一些网络工程师面试题 和大家分享下
  3. 添加虚拟主机 php,给 phpstudy 添加虚拟主机
  4. [剑指offer]面试题第[68-2]题[Leetcode][第236题][JAVA][二叉搜索树的最近公共祖先][递归]
  5. php新闻删除功能设计,php原生开发新闻站之删除新闻
  6. vc mysql free result_VC的MySQL编程
  7. mysql decimal 上限_关于mysql的decimal类型的外键的一个特殊限制
  8. HDOJ水题集合2:最短路(Dijkstra)
  9. Eclipse设置智能提示
  10. jedate选择一年范围日期插件
  11. win7提示由于系统注册表文件丢失或损坏,无法开机
  12. 物质是世界,能量是本质
  13. PS马卡龙渐变海报制作教程
  14. easyExcel 导出自动添加序号
  15. Mac安装brew 及安装报错的解决办法【已解决】
  16. ZOJ3587 Marlon's String
  17. CP和AP有是什么?有什么区别?
  18. 如何申请接入微信APP支付文章
  19. 关于VC中删除非空文件夹
  20. SAP动态安全库存设置

热门文章

  1. “我们没有竞争对手”专访Splunk中国区总经理严立忠
  2. elasticsearch analysis模块 自定义分词 拼音分词 同义词 停词
  3. 达人评测 iPad mini6怎么样 mini6参数配置
  4. 新版金色UI萝卜影视APP系统源码+Java原生开发
  5. 容积卡尔曼滤波CKF—目标跟踪中的应用(仿真部分—II)
  6. uni-app 底部tabbar设置 底部tabbar样式
  7. Windows 系统错误码
  8. 九天揽月带你玩转Ardupilot 的EKF2纸老虎
  9. 工具类-系统C++运行环境修复工具
  10. ASM Disk Discovery 最佳实践