redisTemplate 发布订阅代码案例
时间: 2023-12-21 13:04:39 浏览: 143
下面是使用`redisTemplate`进行发布订阅的代码案例:
1. 创建消息订阅者:
```java
import org.springframework.data.redis.connection.Message;
import org.springframework.data.redis.connection.MessageListener;
import org.springframework.stereotype.Component;
@Component
public class MessageSubscriber implements MessageListener {
@Override
public void onMessage(Message message, byte[] pattern) {
// 处理接收到的消息
String channel = new String(message.getChannel());
String body = new String(message.getBody());
System.out.println("Received message: " + body + " from channel: " + channel);
}
}
```
2. 创建消息发布者:
```java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
@Component
public class MessagePublisher {
@Autowired
private RedisTemplate<String, Object> redisTemplate;
public void publishMessage(String channel, String message) {
redisTemplate.convertAndSend(channel, message);
}
}
```
3. 配置Redis订阅通道和发布消息:
```java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;
@Component
public class RedisPubSubRunner implements ApplicationRunner {
@Autowired
private MessagePublisher messagePublisher;
@Override
public void run(ApplicationArguments args) throws Exception {
// 发布消息到指定通道
messagePublisher.publishMessage("channel", "Hello, Redis!");
}
}
```
在以上示例中,`MessageSubscriber`是一个消息订阅者,实现了`MessageListener`接口,通过重写`onMessage`方法来处理接收到的消息。`MessagePublisher`是一个消息发布者,使用`redisTemplate`的`convertAndSend`方法来发布消息到指定的通道。`RedisPubSubRunner`是一个Spring Boot的ApplicationRunner,在应用启动完成后会执行`run`方法,用来发布消息到Redis通道。
请注意,上述代码中的`redisTemplate`是通过依赖注入的方式进行使用的,你需要根据你的实际情况进行配置和注入`redisTemplate`实例。同时,还需要确保Redis的配置正确,并且Redis的订阅和发布功能已经正常开启。
阅读全文