RabbitMQ养成记 (9.高级特性:消费端限流 和TTL)

消费端限流

RabbitMQ养成记 (9.高级特性:消费端限流 和TTL)_第1张图片
其实这个在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");
    }
}

你可能感兴趣的:(RabbitMQ养成,java-rabbitmq,rabbitmq)