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; } @Bea