springboot下RocketMQ 定时/延时消息案例
时间: 2024-09-25 22:04:16 浏览: 76
Spring Boot整合RocketMQ进行定时/延时消息处理是一个常见的实践场景,它允许你在Spring应用程序中轻松地发送和接收延迟送达的消息。以下是基本步骤:
1. 添加依赖:首先,在你的`pom.xml`文件中添加RocketMQ和Spring Cloud Stream的相关依赖。
```xml
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-binder-rocketmq</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.rocketmq</groupId>
<artifactId>rocketmq-client</artifactId>
</dependency>
```
2. 配置 RocketMQ:在`application.yml`或其他配置文件中,配置生产者和消费者的连接信息。
```yaml
spring:
cloud:
stream:
bindings:
input-topic:
destination: your-delayed-topic
group: your-consumer-group
output-topic:
destination: your-timed-message-topic
binder: rocketmq
retryCount: 0 # 设置重试次数
```
3. 创建定时任务:通过Spring的`@Scheduled`注解创建一个定时任务,用于发送延时消息。
```java
@Service
public class TimedMessageService {
@Autowired
private RabbitTemplate rabbitTemplate;
@Scheduled(cron = "0 0/5 * * * ?") // 每五分钟执行一次
public void sendDelayedMessages() {
for (int i = 0; i < 10; i++) {
String message = "This is a delayed message " + i;
Message msg = new DefaultMQProducer("producerGroup").createMessage("your-timed-message-topic", message.getBytes(StandardCharsets.UTF_8), "", null);
msg.setDelayTimeLevel(MessageQueue延时时间单位);
msg.setDelayTimeSeconds(60); // 设置消息延时60秒
rabbitTemplate.convertAndSend(msg);
}
}
}
```
4. 接收延迟消息:对于消费者,你可以创建一个消费者类,监听指定主题并处理接收到的延时消息。
```java
@Service
@EnableRabbitListeners(queues = "your-input-topic")
public class DelayedMessageListener {
@RabbitHandler
public void handle(String message) {
System.out.println("Received delayed message: " + message);
}
}
```
阅读全文