redis stream结合springboot构造简单消息队列
在Spring Boot中使用Redis Stream构造简单的消息队列,你可以使用spring-data-redis
库。以下是一个简单的例子:
- 添加依赖到你的
pom.xml
:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
- 配置Redis Stream。在
application.properties
或application.yml
中设置Redis连接信息:
# application.properties
spring.redis.host=localhost
spring.redis.port=6379
- 创建一个配置类来定义Stream相关的配置:
@Configuration
public class RedisStreamConfig {
@Autowired
private RedisConnectionFactory connectionFactory;
@Bean
public RedisTemplate<String, Object> redisTemplate() {
final RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(connectionFactory);
return template;
}
@Bean
public StreamListener streamListener() {
return new StreamListener();
}
@Bean
public StreamMessageListenerContainer streamMessageListenerContainer() {
StreamMessageListenerContainer container = new StreamMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
container.addMessageListener(streamListener(), StreamReadRequest.builder()
.stream("my-stream")
.targetType(StreamReadRequest.StreamReadRequest.StreamTarget.HYDRATED)
.build());
return container;
}
}
- 创建一个消息监听器来处理消息:
public class StreamListener implements MessageListener<String, Object> {
@Override
public void onMessage(Message<String, Object> message) {
System.out.println("Received message: " + message.toString());
// 处理消息逻辑
}
}
- 发送消息到Stream:
@Autowired
private RedisTemplate<String, Object> redisTemplate;
public void sendMessage(String streamKey, Object data) {
redisTemplate.convertAndSend(streamKey, data);
}
- 启动Spring Boot应用,并调用
sendMessage
方法向"my-stream"发送消息,StreamListener
会处理接收到的消息。
以上代码提供了一个简单的消息队列示例,使用Redis Stream作为底层数据结构。当然,这只是一个基本的例子,实际应用中你可能需要考虑消息的可靠传递、持久化、错误处理等问题。
评论已关闭