【HBZ分享】MQ如何避免消息堆积问题

Rabbitmq

消息堆积产生原因

  1. 生产效率和消费效率出现严重不对等,可能是生产消息速度太快,也可能是消费者服务器本身性能不够

解决办法

  1. 硬件上提高消费者的硬件配置
  2. 增强消费者消费速率,配置多个消费者,采用消费者集群,相同的routingKey中不会出现重复消费,所以无需担心
  3. 可以采用批量拉取消息的模式,比如有3万条消息,3个消费者,每个消费者直接拉取1万条,而不是消费一条在获取下一条,但这样做的前提是所有消费者的性能要基本相同,否则会出现不公平分配,弱消费者 和 强消费者都分配同样的消息量,会导致弱消费者负载很高,强消费者无事可做的情况

Kafka

解决办法

  1. 增加partition数量,同时增多consumer数量
  2. 把堆积的那个partition中的消息引流到其他的partition,消息分摊,并且增加consumer,增强消费能力

Kafka 与 RabbitMQ消息消费后的区别

  1. Rabbitmq消息消费成功后会立即删除该消息
  2. Kafka消息消费成功后,不会立即删除,而是通过offset来确定从哪里消费,然后通过日志删除策略来进行日志删除

Kafka中日志清理策略: https://blog.csdn.net/a645293829/article/details/122391478

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值