springboot实现redis发布订阅例子
时间: 2023-03-28 14:02:19 浏览: 140
可以回答这个问题。以下是一个简单的 Spring Boot 实现 Redis 发布订阅的例子:
1. 首先,在 pom.xml 文件中添加 Redis 和 Spring Data Redis 的依赖:
```
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
```
2. 在 application.properties 文件中配置 Redis 的连接信息:
```
spring.redis.host=127...1
spring.redis.port=6379
```
3. 创建一个 Redis 发布者:
```
@Component
public class RedisPublisher {
@Autowired
private RedisTemplate<String, Object> redisTemplate;
public void publish(String channel, Object message) {
redisTemplate.convertAndSend(channel, message);
}
}
```
4. 创建一个 Redis 订阅者:
```
@Component
public class RedisSubscriber {
@Autowired
private MessageListenerAdapter messageListenerAdapter;
@PostConstruct
public void init() {
redisTemplate.execute((RedisCallback<Void>) connection -> {
connection.subscribe(messageListenerAdapter, "channel");
return null;
});
}
@PreDestroy
public void destroy() {
redisTemplate.execute((RedisCallback<Void>) connection -> {
connection.unsubscribe();
return null;
});
}
}
```
5. 创建一个消息监听器:
```
@Component
public class MessageListenerAdapter extends org.springframework.data.redis.listener.adapter.MessageListenerAdapter {
@Override
public void onMessage(Message message, byte[] pattern) {
String channel = new String(message.getChannel());
String messageBody = new String(message.getBody());
System.out.println("Received message: " + messageBody + " from channel: " + channel);
}
}
```
6. 在需要发布消息的地方调用 RedisPublisher 的 publish 方法:
```
@Autowired
private RedisPublisher redisPublisher;
redisPublisher.publish("channel", "Hello, Redis!");
```
这样,当有消息发布到 "channel" 频道时,RedisSubscriber 中的 MessageListenerAdapter 就会收到消息并打印出来。
阅读全文