RocketMQ 限流参数

发布时间:2024年01月17日

一、背景

公司消息系统中app 推送,我们知道都是采用第三方付费接口,比如友盟、个推等。发现最近消息发送失败数很多,经过后台查看发现在小部分时间段里发送频率峰值超过了套餐的限制 600/min,大部分时间远远没有达到峰值,套餐升级就会造成成本浪费,所以考虑从程序角度来限流即可。

二、修改参数

消息系统部署了3个实例,每个实例最多200/min,这个只需要修改从 RocketMQ 拉取消息的频率和每次从队列中拉取的条数就可以了。

    @Override
    public void prepareStart(DefaultMQPushConsumer defaultMQPushConsumer) {
        
        // 每次拉取的间隔,5s,1分钟就是拉取12次
        defaultMQPushConsumer.setPullInterval(5000);
        // 设置每次从队列中拉取的消息数为16,1分钟拉取就是 12 * 16=196,因为一个topic 默认是16个队列,所以每个队列每次拉取 16/16 = 1,
        defaultMQPushConsumer.setPullBatchSize(1);
    }

三、总结

1. pullBatchSize 在PushConsumer 模式中默认值是32,注意是每一次从队列拉取的最大数据,针对的是单个队列,所以必须考虑到RocketMQ一个 topic 会创建多个 queue 的特性。

2. 根据经验,我们会认为pullBatchSize 调大点会更好,减少拉取次数处理效率更高,但是有时我们得根据实际情况来做取舍。

文章来源:https://blog.csdn.net/u011060911/article/details/135644426
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。