如何rabbitMQ进行消费限速

简介: 如何rabbitMQ进行消费限速

限流场景下,生产者的速度>消费者的速度,如果我们按照ribbitMq的默认配置,能达到限速的效果么,答案是否定的

不禁就产生了以下几个疑问:

问题1:默认场景下rabbitMQ的消费方式是推还是拉呢?

问题2:需要哪些配置rabbitMQ才能实现限速效果呢?
问题3:消费端是单线程消费还是多线程消费呢,如何进行控制?
问题4:其他消息中间件又如何来实现的呢?
问题5:哪些场景适合推模式,哪些场景适合拉模式呢?

带着这些疑问,展开对rabbitMq的进一步的学习

问题1:默认场景下rabbitMQ的消费方式是推还是拉呢?

参考:

  1. RabbitMQ之Consumer消费模式(Push & Pull)
  2. 官网:Publish/Subscribe

了解到rabbitMq提供了push和pull两种实现方式:

1、push模式

基于DeliverCallback 回调函数,示例代码如下:

DeliverCallback deliverCallback = (consumerTag, delivery) -> {
    String message = new String(delivery.getBody(), "UTF-8");
    System.out.println(" [x] Received '" + message + "'");
};
channel.basicConsume(QUEUE_NAME, true, deliverCallback, consumerTag -> { });

2、pull模式

pull模式主要是通过channel,basicGet方法来获取消息,示例代码如下:

GetResponse response = channel.basicGet(QUEUE_NAME, false);
System.out.println(new String(response.getBody()));
channel.basicAck(response.getEnvelope().getDeliveryTag(),false);

问题2:需要哪些配置rabbitMQ才能实现限速效果呢?

参考资料:

RabbitMQ channel.BasicQos

push模式

1、设置customer的ack模式为手动ack。

channel.basicAck(delivery.getEnvelope().getDeliveryTag(),false);

2、将手动ack的确认在业务完成以后

3、队列模型的当未ack数据达到一定数量时,会阻断后续消息得消费,达到限流得效果

pull模式

不手动拉取消息,那么消息就会堆积到消息中间件,也能达到限速的效果

问题3:消费端是单线程消费还是多线程消费呢,如何增加消费端得处理能力?

提升RabbitMQ消费速度的一些实践

参考文献:

RabbitMQ学习(五)消费端削峰限流

rabbitmq消费消息的模式

相关实践学习
快速体验阿里云云消息队列RocketMQ版
本实验将带您快速体验使用云消息队列RocketMQ版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
前端开发 微服务
Element-Plus 表格 el-table 如何支持分页多选
Element-Plus 表格 el-table 如何支持分页多选
|
安全 Linux 数据安全/隐私保护
centos如何将一般用户设置为超级权限
【4月更文挑战第17天】centos如何将一般用户设置为超级权限
2123 1
Object转Map的两种方式
在平时的工作中,有时候需要将Object转换成Map。笔者这里总结了两种将Object转成Map的方式方法。
8596 0
|
Prometheus 监控 Cloud Native
Spring Boot 可视化监控
本文介绍了如何通过Spring Actuator、Micrometer、Prometheus和Grafana为Spring Boot应用程序添加监控功能。首先创建了一个Spring Boot应用,并配置了Spring Actuator以暴露健康状态和指标接口。接着,利用Micrometer收集应用性能数据,并通过Prometheus抓取这些数据进行存储。最后,使用Grafana将Prometheus中的数据可视化,展示在精美的仪表板上。整个过程简单易行,为Spring Boot应用提供了基本的监控能力,同时也为后续扩展更详细的监控指标奠定了基础。
2055 2
|
8月前
|
人工智能 API 开发者
OpenClaw爆火背后逻辑及创业转型分析(附阿里云/本地部署+百炼API配置实操指南)
2026年初,OpenClaw(昵称“小龙虾”)以燎原之势席卷全球开发者圈子,GitHub上14.5万颗星的热度、云厂商的火速跟进、闲鱼上炒到数百元的上门安装服务,让这款开源AI工具成为现象级产品。它的核心魅力在于彻底颠覆了传统AI的“顾问”定位,让AI真正成为能接管电脑、处理工作、跨应用操作的“员工”。但高门槛的技术配置,让绝大多数普通人只能望洋兴叹,而这也成了创业者的黄金机会。NoDesk AI创始人宋健带领团队用72小时极限开发、两周完成产品落地,基于OpenClaw封装出桌面客户端DeskClaw,一举拿下近亿元融资,上演了一场AI创业的转型神话。本文将拆解这场非典型创业的底层逻辑,解
1159 7
|
人工智能 Unix API
50_选择模型:开源vs闭源
在大型语言模型(LLM)技术快速发展的今天,企业和开发者面临着一个关键决策:是选择开源LLM模型还是闭源LLM服务?这个选择直接影响到项目的成本结构、开发灵活性、数据安全性以及长期战略规划。随着2025年LLM技术的进一步成熟,开源与闭源模型之间的竞争格局也发生了显著变化。
1238 0
|
机器学习/深度学习 自然语言处理 前端开发
国内快递地址解析技术的工作原理详解
随着电商和快递行业快速发展,非结构化地址问题日益突出,如字段混杂、拼写错误等,传统方式难以高效处理。为此,探数平台推出基于NLP和地理信息的快递地址解析API,可将原始地址文本解析为标准结构化字段(如省、市、区、街道等),并支持收件人姓名与电话提取。 技术上,该API采用深度学习模型(如BERT、BiLSTM)进行语义理解,结合地址知识图谱实现纠错与补全。服务支持SaaS调用或私有化部署,性能稳定,适用于各类前端场景。通过地址结构化处理,企业可显著提升订单处理效率,减少配送错误,优化用户体验,助力全链路智能化升级。无论是电商平台还是物流系统,均可从中受益。
1209 0
|
Java 数据库 Spring
如何使用 SpringBoot 实现动态增删启停定时任务?
我是小假 期待与你的下一次相遇 ~
637 5
|
人工智能 自然语言处理 数据可视化
清华大学104页PPT《DeepSeek从入门到精通》分享
清华大学发布的《DeepSeek从入门到精通》PPT共104页,系统讲解了这款由清华团队研发的开源通用人工智能工具。内容涵盖DeepSeek的功能、应用场景及优化策略,帮助用户从零开始掌握文本生成、语义分析、编程辅助等核心技能,并提供实战提示语模板和避坑指南。下载链接:[夸克网盘](https://pan.quark.cn/s/aaf63504a246)。
1935 3
清华大学104页PPT《DeepSeek从入门到精通》分享
|
人工智能 搜索推荐 程序员
用 Go 语言轻松构建 MCP 客户端与服务器
本文介绍了如何使用 mcp-go 构建一个完整的 MCP 应用,包括服务端和客户端两部分。 - 服务端支持注册工具(Tool)、资源(Resource)和提示词(Prompt),并可通过 stdio 或 sse 模式对外提供服务; - 客户端通过 stdio 连接服务器,支持初始化、列出服务内容、调用远程工具等操作。
3444 5

热门文章

最新文章