RabbitMQ(高级特性):限流

消费端限流

在rabbitmq中,使用消费端限流必须开启手动签收信息

过MQ可以对请求进行"削峰填谷",即通过消费端限流的方式限制消息的拉取速度,达到保护消费端的目的。

生产者批量发送消息:

java 复制代码
@Test
public void testSendBatch() {
  // 发送十条消息
  for (int i = 0; i < 10; i++) {
    rabbitTemplate.convertAndSend("my_topic_exchange", "my_routing", "send message..."+i);
   }
}

消费端配置限流机制

yaml 复制代码
spring:
  rabbitmq:
   host: 192.168.0.162
   port: 5672
   username: itbaizhan
   password: itbaizhan
   virtual-host: /
   listener:
    simple:
    # 限流机制必须开启手动签收
     acknowledge-mode: manual
    # 消费端最多拉取5条消息消费,签收后不满5条才会继续拉取消息。
     prefetch: 5

消费者监听队列

java 复制代码
@Component
public class QosConsumer{
  @RabbitListener(queues = "my_queue")
  public void listenMessage(Message message, Channel channel) throws IOException, InterruptedException {
    // 1.获取消息
    System.out.println(new String(message.getBody()));
    // 2.模拟业务处理
    Thread.sleep(3000);
    // 3.签收消息
    channel.basicAck(message.getMessageProperties().getDeliveryTag(), true);
   }
}
相关推荐
JLWcai202510099 天前
铸造领域树脂砂轮|金利威多场景解决方案,20 + 配方覆盖全需求
mongodb·zookeeper·eureka·spark·rabbitmq·memcached·storm
风吹夏回9 天前
RabbitMQ 核心术语 + Python pika 方法完整讲解
分布式·python·rabbitmq
风吹夏回9 天前
RabbitMQ 三种模式入门:HelloWorld、WorkQueue、PubSub
分布式·rabbitmq·ruby
cheems95279 天前
[RabbitMQ高级特性] 消息确认机制:从 Ready / Unacked 到 basicAck、basicReject、basicNack 的底层拆解
分布式·rabbitmq·ruby
半夜修仙10 天前
延迟队列的介绍及常见问题
java·数据库·中间件·rabbitmq
Solis程序员10 天前
Raft:分布式系统的定海神针
java·分布式·kafka·rabbitmq·agent·raft
手握风云-10 天前
一条消息的旅程:RabbitMQ 学习与实践(一)
中间件·rabbitmq
Zyangxsir10 天前
RabbitMQ 核心概念以及Java(Spring Boot)实战用法的整理
java·spring boot·后端·rabbitmq·java-rabbitmq
南部余额11 天前
RabbitMQ 进阶:延迟队列完全指南
java·分布式·spring·rabbitmq
开开心心_Every11 天前
界面干净的开源免费电视浏览器
人工智能·科技·智能手机·计算机外设·rabbitmq·语音识别·etcd