消费端限流
其实这个在springboot之中非常简单
只需要在yml中设置参数:
但是要注意一个要点! 一定要设置手动收到。 如果你设自动 那这个限流就没意义了
listener:
simple:
acknowledge-mode: manual
prefetch: 10
就可以了 你想每次拉去多少条消费 就设置多少/、。
TTL
ttl的全称是 time to live 存活时间/过期时间
说白了就是 当消息到达存活时间之后,还没有被消费出去,就自动清除。
所以按此理解 它一般都是在生产端设置的 而不是消费端
从应用层面讲。它对我们开发者来说 更多的是设置 而不是开发,
所以配置还是蛮简单的。
来代码实践一下:
public static final String EXCHANGE_NAME = "boot_topic_exchange";
public static final String QUEUE_NAME = "boot_queue";
public static final String QUEUE_NAME_TTL = "boot_queue_ttl";
@Bean("bootExchange")
public Exchange bootExchange(){
return ExchangeBuilder.topicExchange(EXCHANGE_NAME).durable(true).build();
}
@Bean("bootQueue")
public Queue bootQueue(){
return QueueBuilder.durable(QUEUE_NAME_TTL).withArgument("x-message-ttl",10000).build();
}
@Bean
public Binding bindQueueExchange(@Qualifier("bootQueue") Queue queue,@Qualifier("bootExchange") Exchange exchange){
return BindingBuilder.bind(queue).to(exchange).with("boot.#").noargs();
}
这样就可以了
你还可以调用这个方法 删除队列 或者删除绑定关系 都可以:
/**
* 删除队列
* */
@Test
public void unBind(){
amqpAdmin.deleteQueue("boot_queue_ttl");
}
}