springboot redis 发布订阅
时间: 2023-08-28 17:06:23 浏览: 117
Spring Boot中使用Redis进行发布订阅可以通过以下步骤实现:
1. 配置Redis连接信息
在application.properties文件中配置Redis连接信息,包括Redis的IP地址、端口号、密码等。
```
spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.password=
```
2. 配置RedisTemplate
在Spring Boot中使用Redis需要使用到RedisTemplate,可以通过以下方式进行配置:
```
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(factory);
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
return redisTemplate;
}
}
```
上述代码中,我们配置了RedisTemplate的序列化方式,使用了StringRedisSerializer和GenericJackson2JsonRedisSerializer进行序列化。
3. 实现发布者
通过RedisTemplate实现发布者,可以使用convertAndSend方法进行消息发布。
```
@Service
public class RedisPublisher {
@Autowired
private RedisTemplate<String, Object> redisTemplate;
public void publish(String channel, Object message) {
redisTemplate.convertAndSend(channel, message);
}
}
```
上述代码中,通过@Autowired注入了RedisTemplate,并实现了publish方法,通过convertAndSend方法实现了消息的发布。
4. 实现订阅者
通过@RedisListener注解实现订阅者,可以监听Redis中指定的频道,实现消息的订阅。
```
@Service
public class RedisSubscriber {
@RedisListener(channel = "test")
public void onMessage(Object message) {
System.out.println("Received Message: " + message);
}
}
```
上述代码中,通过@RedisListener注解指定了监听的频道,实现了onMessage方法,当Redis中有消息发布到该频道时,该方法会被回调。
5. 测试
在Spring Boot中测试Redis发布订阅可以通过以下方式:
```
@RunWith(SpringRunner.class)
@SpringBootTest
public class RedisTest {
@Autowired
private RedisPublisher redisPublisher;
@Test
public void testPublish() {
redisPublisher.publish("test", "Hello World!");
}
}
```
上述代码中,通过@Autowired注入了RedisPublisher,实现了testPublish方法,调用publish方法发布了一条消息到test频道中。
运行测试后,可以在RedisSubscriber的onMessage方法中看到收到了发布的消息。
以上就是Spring Boot中使用Redis进行发布订阅的详细步骤。
阅读全文