-
添加 Redis 和 Spring Data Redis 的依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
-
创建 RedisMessageListenerContainer 和 RedisTemplate 实例:
@Configuration public class RedisConfig { @Autowired private RedisConnectionFactory redisConnectionFactory; @Bean public RedisMessageListenerContainer messageListenerContainer() { RedisMessageListenerContainer container = new RedisMessageListenerContainer(); container.setConnectionFactory(redisConnectionFactory); return container; } @Bean public RedisTemplate<String, Object> redisTemplate() { RedisTemplate<String, Object> template = new RedisTemplate<>(); template.setConnectionFactory(redisConnectionFactory); template.setDefaultSerializer(new StringRedisSerializer()); return template; } }
-
创建消息监听器:
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.connection.Message; import org.springframework.data.redis.connection.MessageListener; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; @Component public class RedisListener implements MessageListener { @Autowired RedisTemplate redisTemplate; @Override public void onMessage(Message message, byte[] bytes) { String s = redisTemplate.getStringSerializer().deserialize(message.getBody()).toString(); System.err.println("key:"+s);//接收消息后的业务逻辑 } }
-
订阅消息:
@Autowired private RedisMessageListenerContainer container; @Autowired private MessageListener listener; @PostConstruct public void subscribe() {//订阅消息 container.addMessageListener(listener, new PatternTopic("test")); }
-
发布消息:
@Autowired private RedisTemplate<String, Object> redisTemplate; public void publish() { redisTemplate.convertAndSend("test", "Hello, world!"); }