消息队列-消息队列保证消息可靠性的一些建议

如何检测到消息丢失?

美团消息队列文章中提到了对消息队列的监控手段,我理解消息丢失,根据不同节点来查看监控:

  • 生产者生产丢失:监控中生产者生产量异常
  • 消费者消费丢失:查看消费者消息延迟监控、消费者 offset 偏移

消息队列高手课中提到的检测方法是:消息队列中的有序性。具体来说,生产消息时附带一个递增 id,消费方消费时检查这个 id。这个方法的困难还是很多的,日常工作中感觉不太可用

  • 需要保证消息在 topic 中严格有序(kafka 只能保证在 分区 是有序的)
  • 多个不同的 producer 也需要保证消息的有序性
  • consumer 检测消息的有序性(consumer 和分区一一对应可能相对方便)

kafka 如何保证「消息可靠」

什么是 kafka 认为的「消息可靠」?

kafka 保证对「已提交」的消息进行有限度的可靠性。

  • 已提交:消息已经在 1-n 个 broker 上写到 日志 中
  • 有限度:n 个 broker 不能同时全部挂掉,不然神仙难救。

防止消息丢失的方法

  1. 生产者消息丢失
    1. 场景
      1. kafka 中提供的 api send 方法是异步发送,此时 send 给你的返回值并不代表 mq 真正成功发送。上述的场景,严格来说并不是 kafka 要提供的消息可靠范围内
      2. producer 设置的 acks 数量过少,且 broker 发生异常导致消息消失,这个对应的就是 kafka 消息可靠的有限性。
    2. 使用建议
      1. 使用 send 方法时已经要使用带有回调参数的 producer.send(
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿德罗斯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值