1. 添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2. 配置Redis连接信息
在application.properties或application.yml中配置Redis连接信息:
spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.password=
3. 创建Redis配置类
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(factory);
template.setKeySerializer(new StringRedisSerializer());
template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
return template;
}
@Bean
public MessageListenerAdapter messageListenerAdapter(MessageReceiver messageReceiver) {
return new MessageListenerAdapter(messageReceiver, "receiveMessage");
}
@Bean
public RedisMessageListenerContainer redisMessageListenerContainer(RedisConnectionFactory factory,
MessageListenerAdapter messageListenerAdapter) {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(factory);
container.addMessageListener(messageListenerAdapter, new PatternTopic("test"));
return container;
}
}
4. 创建消息接收者
@Component
public class MessageReceiver {
public void receiveMessage(String message) {
System.out.println("Received message: " + message);
}
}
5. 发布消息
@Autowired
private RedisTemplate<String, Object> redisTemplate;
public void sendMessage(String message) {
redisTemplate.convertAndSend("test", message);
}
6. 测试
@SpringBootTest
class RedisTest {
@Autowired
private RedisTemplate<String, Object> redisTemplate;
@Autowired
private MessageReceiver messageReceiver;
@Test
void testSendMessage() {
redisTemplate.convertAndSend("test", "Hello Redis!");
}
@Test
void testReceiveMessage() throws InterruptedException {
String message = "Hello Redis!";
redisTemplate.convertAndSend("test", message);
Thread.sleep(1000);
verify(messageReceiver).receiveMessage(message);
}
}
以上就是Spring Boot整合Redis实现订阅发布功能的代码框架和测试。