SpringBoot中使用Redis的訂閱釋出
阿新 • • 發佈:2021-11-09
原文見: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
- MessageListenerAdapter的實現類會通過Spring自動注入到adapterMap變數,之後通過
container
方法註冊。 handleMessage(String message)
方法名不能改成別的,只能是這個名字。因為MessageListenerAdapter
中的defaultListenerMethod="handleMessage"