Java JDK 版本: Oracle OpenJDK 17.0.9
SpringBoot 版本: 3.5.9
- Spring Web
- Lombok
- Spring for RabbitMQ
RabbitMQ version: 3.12.1
RabbitMQ 实现延迟队列的插件: rabbitmq_delayed_message_exchange-3.12.0
1. TTL
TTL(Time-To-Live)是 RabbitMQ 中控制消息或队列生命周期的机制,用于在指定时间后自动删除消息或队列,避免资源堆积。
- 消息 TTL:为单条消息设置过期时间
- 队列 TTL:设置整个队列的过期时间
发送消息
import jakarta.annotation.Resource;
import org.example.springrabbitmqextensions.constant.Constants;
import org.springframework.amqp.core.MessagePostProcessor;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/producer")
public class ProducerController {
@Resource(name = "rabbitTemplate")
private RabbitTemplate rabbitTemplate;
@RequestMapping("/ttl")
public String ttl() {
MessagePostProcessor messagePostProcessor = message -> {
message.getMessageProperties().setExpiration("10000");
message;
};
rabbitTemplate.convertAndSend(Constants.TTL_EXCHANGE, , , messagePostProcessor);
rabbitTemplate.convertAndSend(Constants.TTL_EXCHANGE, , );
;
}
}


