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);
   }
}
相关推荐
IT策士1 天前
Python 中间件系列:消息队列 RabbitMQ 操作
python·中间件·rabbitmq
逆境不可逃2 天前
黑马 RabbitMq 高级篇 学习记录
分布式·学习·rabbitmq
学Linux的语莫2 天前
消息队列 MQ 怎么选?RabbitMQ实操
分布式·rabbitmq
逆境不可逃3 天前
黑马 RabbitMq 基础篇 学习记录
学习·rabbitmq·ruby
过期动态4 天前
【RabbitMQ基础篇】RabbitMQ从入门到实战
java·jvm·数据库·分布式·spring·rabbitmq·intellij-idea
weixin_456723165 天前
Java项目的rabbitmq配置vhost
java·rabbitmq·java-rabbitmq
铁皮哥5 天前
【后端开发】RabbitMQ、RocketMQ、Kafka 怎么选?我从业务场景重新梳理了一遍
java·linux·数据库·分布式·kafka·rabbitmq·rocketmq
宇之广曜5 天前
从 MQ 到 Celery:把异步任务、状态表、重试补偿和 Outbox 一次讲清楚
kafka·rabbitmq
何中应6 天前
RabbitMQ集群搭建
分布式·rabbitmq
未来龙皇小蓝6 天前
SpringBoot API日志系统设计-02:线程池异步化与RabbitMQ解耦
数据库·spring boot·后端·性能优化·rabbitmq·java-rabbitmq