2.使用消息中间件
<dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-client</artifactId> <version>${rocketmq-client.version}</version> </dependency> <dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-spring-boot-starter</artifactId> <version>${rocketmq-spring-boot-starter.version}</version> </dependency>2.在application.properties文件中添加以下配置:
rocketmq.name-server=your-nameserver-ip:9876 rocketmq.producer.group=your-group-name3.创建一个RocketMQ生产者类:
import org.apache.rocketmq.spring.core.RocketMQTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; import org.springframework.messaging.support.MessageBuilder; import org.springframework.stereotype.Component; @Component public class RocketMQProducer { @Autowired private RocketMQTemplate rocketMQTemplate; public void sendDelayMessage(String topic, Object message, long timeout, int delayLevel) { // 堆代码 duidaima.com // 封装消息 Message<Object> msg = MessageBuilder.withPayload(message).build(); // 发送消息 rocketMQTemplate.syncSend(topic, msg, timeout, delayLevel); } }如上在代码中添加了rocketMQTemplate.syncSend(topic, msg, timeout, delayLevel); 这句代码设置了delayLevel。
private String messageDelayLevel = "1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h";解释:
rocketMQProducer.sendDelayMessage("your-topic-name", "your-message", "timeout", 3);这句代码设置了delayLevel=3,对应messageDelayLevel中的10s,表示消息需要延时10s才能消费。