Spring Boot中如何使用redis的发布和订阅模式
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,本篇内容主要讲解"Spring Boot中如何使用redis的发布和订阅模式",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Spring Boot中如何使用
千家信息网最后更新 2025年01月23日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安全错误
数据库的锁怎样保障安全
数据库查询所有人的工龄
浪潮服务器装系统自动重启
安卓软件开发用什么语言好
软件开发报价非标
5g数据服务器华为
被拉黑显示服务器错误码
广东安卓软件开发怎么样
南京软件开发求职
拜城县网络安全
软件开发工程师 缩写
小幽灵网络技术论坛程序
互联网 智能科技发展
饥荒服务器自动暂停失败
你连接的数据库可能版本不对
数据库的核心基础是什么
搭建tftp服务器
抖音拉新网络技术分享
数据库技术服务支持模板
护苗安网络安全课
网络安全对抗赛
长沙速航软件开发有限公司
网络安全崔峰
安徽和风网络技术服务有限公司
网络安全存在问题自查报告
河南星爵网络技术服务
多媒体网络技术和电商哪个好
浮居内网穿透 网游服务器
谷歌地球服务器错误或离线
南京网络安全保障
南京软件开发技术指导