MQ高级特性
1.削峰
设置 消费者

测试 添加多条消息


拉取消息 每隔20秒拉取一次 一次拉取五条 然后在20秒内一条一条消费



TTL
Time To Live(存活时间/过期时间)。
当消息到达存活时间后,还没有被消费,会被自动清除。
RabbitMQ可以对消息设置过期时间,也可以对整个队列(Queue)设置过期时间。
可以在管理台新建队列、交换机,绑定
1.图形化操作
添加队列

添加交换机

将交换机和对应的队列进行绑定


时间结束 , 消息失效

2.代码实现
配置 生产者

@Configuration
public class TopicMqTtlConfig {
@Value("${mq.exchange.name}")
private String EXCHANGENAME;
@Value("${mq.queue.name1}")
private String QUEUENAME1;
@Value("${mq.queue.name2}")
private String QUEUENAME2;
// 1
// . 交换机
@Bean("ex1")
public Exchange getExchange(){
Exchange exchange = ExchangeBuilder.topicExchange(EXCHANGENAME).durable(false).build();
return exchange;
}
// 2。 队列
@Bean("queue1")
public Queue getQueue1(){
Queue queue = QueueBuilder.nonDurable(QUEUENAME1)
.withArgument("x-message-ttl",30000)//过期时间30秒
.withArgument("x-max-length",10)//队列中最多接收10条消息超过10条的部分废弃
.build();
return queue;
}
@Bean("queue2")
public Queue getQueue2(){
Queue queue2 = QueueBuilder.nonDurable(QUEUENAME2)
.withArgument("x-message-ttl",300000000)//过期时间30秒
.build();
return queue2;
}
// 3. 交换机和队列进行绑定
@Bean("binding1")
public Binding bindQueue1ToExchange(@Qualifier("ex1") Exchange exchange,@Qualifier("queue1") Queue queue){
Binding binding1 = BindingBuilder.bind(queue).to(exchange).with("ttl1.*").noargs();
return binding1;
}
@Bean("binding2")
public Binding bindQueue2ToExchange(@Qualifier("ex1") Ex

本文详细介绍了在SpringBoot中使用RabbitMQ实现的MQ高级特性,包括消息削峰、TTL过期机制、死信队列处理和利用TTL与死信队列模拟延迟队列的功能,以及如何配置生产和消费端,以及处理订单相关场景的应用。
最低0.47元/天 解锁文章
908

被折叠的 条评论
为什么被折叠?



