Spring Boot中如何使用redis的发布和订阅模式
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容主要讲解"Spring Boot中如何使用redis的发布和订阅模式",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Spring Boot中如何使用
千家信息网最后更新 2026年11月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安全错误
数据库的锁怎样保障安全
互联网科技企业
喔噻互联网科技有限公司
科技赋能下的互联网金融
盈实互联网科技
科技互联网技术
互联网金融公司科技
美国互联网前沿科技
互联网科技中介
阿里互联网科技公司
宜昌元轩互联网科技有限公司
辽宁互联网新科技
苏州铭阳互联网科技有限公司
哈尔滨屹滨互联网科技有限公司
2021互联网科技公司排名
怎样加入科技互联网
互联网与数字科技关系
西安有哪些互联网高科技企业
互联网科技机房
科技互联网经济论坛
现代科技的标志之一的互联网
麻工互联网科技
互联网科技ppt模板
北京禾田雨橡互联网科技
天下捷融互联网科技
一五八零互联网科技
青岛科技大学互联网大赛研究生
浙南科技城互联网大厦建设工程
互联网方面的科技前沿
江苏苏星互联网科技有限公司
科技互联网专业工作会议发言稿