RocketMq-负载均衡

2020-12-17  本文已影响0人  麦大大吃不胖

by shihang.mai

1. 创建Topic

2. producer端

发送的时候可以用MessageQueueSelector类去发送。

3. consumer端

  1. consumer端的数量最好和MessageQueue数量对等或者是倍数

  2. consumer端有以下几种负载均衡策略,默认使用平均分配

rocketMqConsumer负载均衡策略

4. 消息堆积

现象: mq消息堆积20亿

问题原因: 当时我们的Topic用了32个queue,consumerGroup线程数只有10几个.queue的数远多于consumer的数

解决方式

  1. 先4个工程都设置consumerGroup的线程数=32,那么就一共有128个消费线程
  2. 自测一次业务需要40ms
  3. 预测需要18小时才能消费完,实际上18小时多一点
  4. 为了避免新告警延迟,创建一个新的消费组,线程数也是32,也是4个工程,fromwhere设置为最新的offset
  5. 代码中加入逻辑,当消费到当前offset时,不消费.这样旧消费组继续消费,新消费组消费新的告警,并且也避免旧消费组重复消费
上一篇下一篇

猜你喜欢

热点阅读