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

在SpringBoot中,消费端限流可以通过设置YML文件中的acknowledge-mode为manual和prefetch值来实现。TTL主要用来设定消息的存活时间,未被消费的消息会在达到设定时间后自动清除,通常在生产端设置。示例代码展示了如何创建带有TTL的RabbitMQ队列并进行绑定。
摘要由CSDN通过智能技术生成

消费端限流

在这里插入图片描述
其实这个在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");
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值