springboot整合redis实现发布订阅消息例子
时间: 2023-03-28 22:02:58 浏览: 142
Spring boot+redis实现消息发布与订阅的代码
5星 · 资源好评率100%
好的,我可以回答这个问题。以下是一个简单的 Spring Boot 整合 Redis 实现发布订阅消息的例子:
1. 首先,在 pom.xml 文件中添加 Redis 相关依赖:
```
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
```
2. 在 application.properties 文件中配置 Redis 连接信息:
```
spring.redis.host=localhost
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((RedisConnection connection) -> {
connection.subscribe(messageListenerAdapter, "channel");
return null;
});
}
@PreDestroy
public void destroy() {
redisTemplate.execute((RedisConnection connection) -> {
connection.unsubscribe(messageListenerAdapter, "channel");
return null;
});
}
}
```
5. 在需要发布消息的地方调用 RedisPublisher 的 publish 方法:
```
@Autowired
private RedisPublisher redisPublisher;
redisPublisher.publish("channel", "message");
```
6. 在需要订阅消息的地方实现 MessageListener 接口:
```
@Component
public class MyMessageListener implements MessageListener {
@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);
}
}
```
以上就是一个简单的 Spring Boot 整合 Redis 实现发布订阅消息的例子。
阅读全文