Spring Boot中如何使用redis的发布和订阅模式
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,本篇内容主要讲解"Spring Boot中如何使用redis的发布和订阅模式",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Spring Boot中如何使用
千家信息网最后更新 2025年12月01日Spring Boot中如何使用redis的发布和订阅模式
本篇内容主要讲解"Spring Boot中如何使用redis的发布和订阅模式",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Spring Boot中如何使用redis的发布和订阅模式"吧!
redis不仅是一个非常强大的非关系型数据库,它同时还拥有消息中间件的pub/sub功能,在spring boot中进行如下设置就可以使用redis的pub/sub功能:
1.创建redis监听的设置类
@Configurationpublic class RedisSubListenerConfig { //初始化监听器 [@Bean](https://my.oschina.net/bean) RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory, MessageListenerAdapter listenerAdapter) { RedisMessageListenerContainer container = new RedisMessageListenerContainer(); container.setConnectionFactory(connectionFactory); container.addMessageListener(listenerAdapter, new PatternTopic("这里是监听的通道的名字")); return container; } //利用反射来创建监听到消息之后的执行方法 [@Bean](https://my.oschina.net/bean) MessageListenerAdapter listenerAdapter(RedisReceiver redisReceiver) { return new MessageListenerAdapter(redisReceiver, "receiveMessage"); } //使用默认的工厂初始化redis操作模板 [@Bean](https://my.oschina.net/bean) StringRedisTemplate template(RedisConnectionFactory connectionFactory) { return new StringRedisTemplate(connectionFactory); }}2.创建监听之后的receiver方法类
[@Service](https://my.oschina.net/service)public class RedisReceiver { @Autowired RedisService redisService; public void receiveMessage(String message) { //这里是收到通道的消息之后执行的方法 }}3.使用reidsTemplate向通道发送消息
@Servicepublic class RedisService { @Autowired private StringRedisTemplate stringRedisTemplate; //向通道发送消息的方法 public void sendChannelMess(String channel, String message) { stringRedisTemplate.convertAndSend(channel, message); }}附:有些设置在RedisReceiver接受类构造器中传入了CountDownLatch来控制线程,如果不需要控制线程可以不用。
举例
@Component@Slf4jpublic class MessageReceiver { @Autowired ISocketService socketService; /**接收消息的方法 * @throws Exception */ public void receiveMessage(String message) throws Exception { log.info("收到一条消息From Redis:" + message); Message msg = JSON.parseObject(message, Message.class); if (null == msg.getAction()) { throw new Exception("必须设置客户端收到消息后需要执行的动作"); } if (null == msg.getTableId() || "".equals(msg.getTableId())) { throw new Exception("必须设置接收消息的桌码!"); } if (msg.getAction().equals(Event.NOTICEOTHER)) { NoticeOtherDto noticeOtherDto = JSON.parseObject(msg.getData().toString(), NoticeOtherDto.class); msg.setData(noticeOtherDto.getData()); socketService.noticeOther(msg.getTenantId() + "-" + msg.getTableId(), noticeOtherDto.getEventName(), msg); } else { // 通过WebSocket群发消息 socketService.sendMessageToTable(msg.getTenantId() + "-" + msg.getTableId(), msg.getAction(), msg); } }}@Componentpublic class MessageSender { @Autowired private StringRedisTemplate stringRedisTemplate; public void sendMessage(Message message) { stringRedisTemplate.convertAndSend(RedisConstant.TOPIC_KEY, JSON.toJSONString(message)); }}到此,相信大家对"Spring Boot中如何使用redis的发布和订阅模式"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
消息
方法
通道
监听
模式
订阅
内容
功能
线程
学习
控制
实用
强大
更深
不用
中间件
兴趣
动作
同时
名字
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
时序数据库技术难点
软件开发做三年工资两万高吗
温州推广网络技术收费标准
加强网络安全理由
全端网络技术有限公司
活字格服务器并发数
科技+互联网概念
数据库sql实例教程
go 服务器管理
网络安全维护英文名词
深圳爱生活网络技术有限公司
上海时信互联网科技有限公司
我的世界意外断开服务器怎么办
云服务器是不是就像虚拟主机一样
数据库可以统计数据吗
江苏参考软件开发电话多少
网络安全网关
宁夏网络安全防疫
网络安全保密检查整改情况报告
网络安全法对自媒体
存电影用什么服务器
网络安全服务有什么功能
陕西电脑服务器机箱加工厂家
迷你是怎么炸mc服务器的
软件开发测试就业前景
电讯盈科小巨人软件开发公司
建筑行业网络安全工作开展
宁夏住建网络安全攻防演练
2700x软件开发
工业相机vb软件开发包