SpringBoot2.0中使用订阅redis的多个频道的消息
2024-08-31 11:58:15
声明:参考文章:https://blog.csdn.net/myNameIssls/article/details/75471012?locationNum=2&fps=1
一·使用maven,在项目中引入redis启动器
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
二.注册一个redis消息监听类
@Configuration
public class RedisSubListenerConfig {
//不同的频道名
private static final String channel = "testchannel";
private static final String channel2 = "chat"; /**
* redis消息监听器容器
* 可以添加多个监听不同话题的redis监听器,只需要把消息监听器和相应的消息订阅处理器绑定,该消息监听器
* 通过反射技术调用消息订阅处理器的相关方法进行一些业务处理
* @param connectionFactory
* @param listenerAdapter
* @return
*/
@Bean //相当于xml中的bean
RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory,
MessageListenerAdapter listenerAdapter,MessageListenerAdapter listenerAdapter2) { RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
//订阅了一个叫testchannel 的通道
container.addMessageListener(listenerAdapter, new PatternTopic(RedisSubListenerConfig.channel));
//订阅了一个叫chat的频道
container.addMessageListener(listenerAdapter2, new PatternTopic(RedisSubListenerConfig.channel2));
return container;
} /**
* 消息监听器适配器,绑定消息处理器,利用反射技术调用消息处理器的业务方法
* @param receiver
* @return
*/
@Bean
MessageListenerAdapter listenerAdapter(MessageReceiver receiver) {
return new MessageListenerAdapter(receiver, "receiveMessage");
} @Bean
MessageListenerAdapter listenerAdapter2(MessageReceiver receiver) {
return new MessageListenerAdapter(receiver, "receiveMessage2");
} /**redis 读取内容的template */
@Bean
StringRedisTemplate template(RedisConnectionFactory connectionFactory) {
return new StringRedisTemplate(connectionFactory);
} }
三·编写处理订阅消息的类
@Component
public class MessageReceiver {
/**接收消息的方法*/
public void receiveMessage(String message){
System.out.println("收到一条消息:"+message);
} /**接收消息的方法*/
public void receiveMessage2(String message){
System.out.println("收到一条消息2:"+message);
} }
四.启动程序,向redis的chat以及testchannel频道中发送消息,都可以监听到
最新文章
- Eclipse 的单步调试
- 教你几种在SQLServer中删除重复数据方法(转)
- C# 解析XML格式的字符串
- ADO.NET基础02(语句参数化,配置文件,DataSet与DataTable)
- Swift - 19 - 字典的初始化
- 百度地图API 重新生成点聚合的功能
- HDOJ 5093 Battle ships 二分图匹配
- 为多态基类声明virtual析构函数
- python3列表
- javascript的数组之reverse()
- R语言学习网址
- cc攻击和ddos攻击
- 小白学习Python遇到的一些2.7与3.X之间的不同问题
- Structs复习 开始 第一个helloworld项目
- ODT(old driver tree)详解(带例题)
- (原创)C++11改进我们的程序之简化我们的程序(二)
- [git]git project仓库迁移
- PHP之string之ltrim()函数使用
- 第三章 线程安全的DateFormat工具类
- U3D OnDrawGizmos