2 Star 4 Fork 1

零声社区/一线互联网大厂社招面试题解析归纳整理-持续更新

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
3.6 RabbitMQ消息堆积怎么处理? 1.47 KB
一键复制 编辑 原始数据 按行查看 历史
增加消费者的处理能力(例如优化代码),或减少发布频率
单纯升级硬件不是办法,只能起到一时的作用
考虑使用队列最大长度限制,RabbitMQ 3.1支持
给消息设置年龄,超时就丢弃
默认情况下,rabbitmq消费者为单线程串行消费,设置并发消费两个关键属性concurrentConsumers和prefetchCount,concurrentConsumers设置的是对每个listener在初始化的时候设置的并发消费者的个数,prefetchCount是每次一次性从broker里面取的待消费的消息的个数
建立新的queue,消费者同时订阅新旧queue
生产者端缓存数据,在mq被消费完后再发送到mq
打破发送循环条件,设置合适的qos值,当qos值被用光,而新的ack没有被mq接收时,就可以跳出发送循环,去接收新的消息;消费者主动block接收进程,消费者感受到接收消息过快时主动block,利用block和unblock方法调节接收速率,当接收线程被block时,跳出发送循环。
新建一个topic,partition是原来的10倍;然后写一个临时的分发数据的consumer程序,这个程序部署上去消费积压的数据,消费之后不做耗时的处理,直接均匀轮询写入临时建立好的10倍数量的queue;接着临时征用10倍的机器来部署consumer,每一批consumer消费一个临时queue的数据;等快速消费完积压数据之后,得恢复原先部署架构,重新用原先的consumer机器来消费消息;
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/zero-sound-community/interview-question-bank.git
git@gitee.com:zero-sound-community/interview-question-bank.git
zero-sound-community
interview-question-bank
一线互联网大厂社招面试题解析归纳整理-持续更新
master

搜索帮助