Spring中使用Redis实现消息广播发布订阅
官方文档:https://spring.io/guides/gs/messaging-redis/
- 官方文档中也有代码示例,建议参考官方文档
1. 安装Redis
自行安装
2. 项目中导入相关依赖并配置参数
pom.xml
<!-- SpringBoot Boot Redis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
application.yml
spring:
redis:
host: localhost
port: 6379
password:
3. 功能配置
@Bean
RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory, MessageListenerAdapter listenerAdapter) {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
container.addMessageListener(listenerAdapter, new PatternTopic("需要订阅的主题"));
return container;
}
/**
* @param listener 自定义接收消息类和方法
* @return
*/
@Bean
MessageListenerAdapter listenerAdapter(MyListener listener) {
return new MessageListenerAdapter(listener, "myFunction");
}
MyListener.java
@Component
public class MyListener {
public void myFunction(String message) {
System.out.println(message);
}
}
4. 测试
发布:
void test() {
// ...
redisTemplate.convertAndSend("需要订阅的主题", "需要发布的消息");
// ...
}