本身消息的发送就是异步发送的,所以在任何时候,channel上肯定不止只有一个消息另外来自消费者的手动确认本质上也是异步的。因此这里就存在一个未确认的消息缓冲区,因此希望开发人员能限制此缓冲区的大小,以避免缓冲区里面无限制的未确认消息问题。这个时候就可以通过使用basic.gos.方法设置“预取计数”值来完成的。该值定义通道上允许的未确认消息的最大数量。一旦数量达到配置的数量,RabbitMQ将停止在通道上传递更多消息,除非至少有一个未处理的消息被确认,例如,假设在通道上有未确认的消息5、6、7,8,并且通道的预取计数设置为4,此时RabbitMQ.将不会在该通道上再传递任何消息,除非至少有一个未应答的消息被ack。比方说tag=6这个消息刚刚被确认ACK,RabbitMQ将会感知这个情况到并再发送一条消息。消息应答和QoS预取值对用户吞吐量有重大影响。通常,增加预取将提高向消费者传递消息的速度。虽然自动应答传输消息速率是最佳的,但是,在这种情况下已传递但尚未处理的消息的数量也会增加,从而增加了消费者的RAM消耗(随机存取存储器)应该小心使用具有无限预处理的自动确认模式或手动确认模式,消费者消费了大量的消息如果没有确认的话,会导致消费者连接节点的内存消耗变大,所以找到合适的预取值是一个反复试验的过程,不同的负载该值取值也不同100到300范围内的值通常可提供最佳的吞吐量,并且不会给消费者带来太大的风险。预取值为1是最保守的。当然这将使吞吐量变得很低,特别是消费者连接延迟很严重的情况下,特别是在消费者连接等待时间较长的环境中。对于大多数应用来说,稍微高一点的值将是最佳的。

RabbitMQ预取值相关推荐

  1. RabbitMQ(二)工作队列

    工作队列(又称任务队列)的主要思想是避免立即执行资源密集型任务,而不得不等待它完成.相反我们安排任务在之后执行.我们把任务封装为消息并将其发送到队列.在后台运行的工作进程将弹出任务并最终执行作业.当有 ...

  2. 后端学习 - RabbitMQ

    文章目录 一 MQ 的作用与基本概念 1 流量削峰 2 应用解耦 3 异步调用 4 四个基本概念 二 核心模式 1 工作队列模式(Work Queue) 2 发布/订阅模式(Publish / Sub ...

  3. RabbitMQ保姆级教程

    文章目录 前言 一.MQ是什么? 1.1 AMQP 二.在Linux安装RabbitMQ 2.1 安装 2.2 RabbitMQ启动命令 2.3 开启RabbitMQ 后台管理界面 2.3.1 登录r ...

  4. java mq发送sdk_【转载】java实现rabbitmq消息的发送接受

    本文不介绍amqp和rabbitmq相关知识,请自行网上查阅 本文是基于spring-rabbit中间件来实现消息的发送接受功能 see http://www.rabbitmq.com/tutoria ...

  5. 快速入门RabbitMq,看这一篇就够了。

    RabbitMq 1. MQ 1.1 MQ的相关概念 1.2 为什么要用MQ? 1.2.1 流量消峰 1.2.2 应用解耦 1.2.3 异步处理 1.3 MQ分类 1.3.1 ActiveMQ 1.3 ...

  6. java同步调用rabbitmq,使用RabbitMQ可以放慢同步发布/消耗速度

    我正在评估RabbitMQ,虽然(AMQP本身,以及RabbitMQ)的总体印象是积极的,但我对结果并不是很满意 . 我正在尝试同时发布和使用消息,并且已经实现了非常差的消息速率 . 我有一个持久的直 ...

  7. RabbitMQ入门到精通

    RabbitMQ 1. 消息中间件概述 1.1. 为什么学习消息队列 电子商务应用中,经常需要对庞大的海量数据进行监控,随着网络技术和软件开发技术的不断提高,在实战开发中MQ的使用与日俱增,特别是Ra ...

  8. 2. RabbitMQ 的基本使用

    二八佳人体似酥,腰间仗剑斩愚夫.虽然不见人头落,暗里教君骨髓枯. 前期准备 RabbitMQ 启动 并连接 , 创建一个虚拟主机, 老蝴蝶的 名称叫 yjl 创建一个普通的 maven 项目, 非 S ...

  9. Rabbitmq面试题总结,非常详细,杜绝标题党,不详细你打我,下次不写博客了

    文章目录 说明 什么是MQ? MQ有什么缺点? MQ的应用场景 Rabbitmq是什么?Rabbitmq的构造 vhost 是什么? 起什么作用? 谈谈你对AMQP的理解 消息是如何路由的? Rabb ...

最新文章

  1. 运维一定要懂的100个网络安全小知识
  2. Python_python内置函数
  3. unzipping/Users/xq/.gradle/wrapper /dists/gradle-3.3-all/55gk2rcmfc6p2dg9u9ohc3hw9/gradle-3.3-all.zi
  4. H264/ACC数据使用librtmp推流到服务器
  5. 负压式爬壁机器人_一种负压吸附式仿生爬壁机器人的制作方法
  6. NYOJ-部分和问题(dfs)
  7. 4.2 tensorflow2实现多总体位置参数趋势性检验——python实战
  8. 使用EasyUI加载树形菜单
  9. 使用nvidia-nsight编译器开发C/C++以及cuda编程
  10. 易语言 安装目录没有VC98linker 编译不成功 VC98linker静态连接器(迷你版),易语言VC98linker破解工具,修复静态编译。
  11. net-java-php-python-教学资源管理系统hsg修改版计算机毕业设计程序
  12. IOS通用链接处理(Universal Links),apple-app-site-association
  13. 2019重新起航:搭建个人博客
  14. android原生组件,RN原生的安卓UI组件
  15. STM32F030R8移植freeModbus协议栈
  16. linux系统下以存储从大到小并以K,M,G为单位的方式查看当前目录下的文件信息
  17. span从入门到精通1 第三方工具类GifDrawable
  18. centOS 8 重启网络服务 / 重启网卡
  19. Java-SpringBoot-养老驿站管理系统-毕业设计
  20. 稳定性高可用测试——各大厂质量保障实践分享汇总(下)

热门文章

  1. Visual C++位图操作(1)
  2. 怪事,硬盘上的FC3_cd1的ISO莫名其妙被改变了
  3. selenium,webdriver 执行js语句 对象是百度
  4. 【转载】python 编码问题 u'汉字'
  5. Leetcode题解(十七)
  6. [js开源组件开发]图片放大镜
  7. Vue:触发视图更新的hack
  8. SQL Server 2016 行级别权限控制
  9. linux新手入门必看
  10. LINQ Order by 排序