如何用Spring使用Redis作为消息订阅?
在Spring中使用Redis作为消息订阅,你可以使用RedisMessageListenerContainer
来处理订阅。以下是一个简单的例子:
- 添加依赖(如果你使用的是Spring Boot,这些依赖通常已经包含了):
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>2.6.0</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.7.0</version>
</dependency>
- 配置
RedisMessageListenerContainer
:
@Configuration
public class RedisConfig {
@Autowired
private RedisConnectionFactory connectionFactory;
@Bean
RedisMessageListenerContainer redisMessageListenerContainer() {
final RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
container.addMessageListener(messageListener(), topic());
return container;
}
@Bean
MessageListener messageListener() {
return new MessageListener() {
@Override
public void onMessage(Message message, byte[] pattern) {
// 处理接收到的消息
System.out.println("Received Message: " + message);
}
};
}
@Bean
ChannelTopic topic() {
return new ChannelTopic("pubsub:queue");
}
}
- 发送消息:
@Autowired
private StringRedisTemplate stringRedisTemplate;
public void sendMessage(String message) {
stringRedisTemplate.convertAndSend("pubsub:queue", message);
}
确保你的StringRedisTemplate
或RedisTemplate
的bean配置了正确的RedisConnectionFactory
。
以上代码配置了一个RedisMessageListenerContainer
,它会监听pubsub:queue
这个频道的消息。每当有消息发送到这个频道时,messageListener
会被触发,并打印出接收到的消息。
评论已关闭