RocketMQ-- 建议去 slave 拉取消息

在 RocketMQ 中,虽然消息先存放在内存中,在刷到硬盘中。但又可能消息已经落在了 硬盘中,导致了消费端去硬盘中中拉取消息,造就了 IO 过高的现象。但又一个几个参数我们是可以做调整的。参数列表如下:
这里写图片描述

当然啦。这几个参数的值我们是可以调整的。但我觉得,还是默认比较好。

但这几个参数的相关使用在哪里呢?请看下面的截图:
这里写图片描述

注意啦!在 rocketmq 中,offset 增加 1 ,就表示 增加一个字节;可能有的小伙伴对 checkInDiskByCommitOffset 这个函数理解的不是很明白,看一下的截图:
这里写图片描述
这里使用到的是,和 物理内存进行做比较的。不能使用到虚拟内存的。因为虚拟内存还是硬盘的一块区域。

如果有很多消息都落在硬盘上了,那么,master broker 会返回一个参数 slave broker id (默认值是 1,可以配置的哦),建议去 slave broker  id 中拉取数据。请看下图:
这里写图片描述。其中
,private long whichBrokerWhenConsumeSlowly = 1 ;这个属性是可以配置。这里的 1 表示 slave broker 的 id。
客户端的代码比较简单,就不贴出来了。
在客户端拉取消息的时候,会通过 mq 拿到 broker 的地址的。如果没有 slave 的话,最终还是去 master broker 拉取消息,只是速度慢了点罢了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值