SpringBoot中使用Redis的订阅发布
原文见:https://blog.virde.xyz/archives/springboot-zhong-shi-yong-redis-de-ding-yue-fa-bu
步骤
pom.xml引入redis依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
在application.properties中添加redis配置
spring.redis.host=127.0.0.1
spring.redis.password=mypassword
spring.redis.ssl=false
spring.redis.port=6379
spring.redis.timeout=10000ms
添加Configuration
@Configuration
public class RedisPublicChannelConfiguration {
@Bean
public RedisMessageListenerContainer container(
RedisConnectionFactory connectionFactory,
Map<String,MessageListenerAdapter> adapterMap) {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
adapterMap.keySet().forEach(topic->{
container.addMessageListener(adapterMap.get(topic),new PatternTopic(topic));
});
return container;
}
}
添加Redis订阅
@Slf4j
@Component("PUBLIC_TOPIC_WEB")
public class RedisWebPublicChannelReceiver extends MessageListenerAdapter {
public void handleMessage(String message) {
log.info("Message:{}",message);
}
}
测试效果
启动项目,在redis中使用命令行:PUBLISH PUBLIC_TOPIC_WEB Hello 发布订阅通知。
说明:
RedisWebPublicChannelReceiver的Component注解名字是Redis订阅的Key。- MessageListenerAdapter的实现类会通过Spring自动注入到adapterMap变量,之后通过
container方法注册。 handleMessage(String message)方法名不能改成别的,只能是这个名字。因为MessageListenerAdapter中的defaultListenerMethod="handleMessage"


浙公网安备 33010602011771号