消息队列必知必会
李玥
京东零售技术架构部资深架构师
已下架
172 人已学习
课程目录
已完结 5 讲
01 | 为什么需要消息队列?
02 | 该如何选择消息队列?
03 | 如何确保消息不会丢失?
04 | 如何处理消费过程中的重复消息?
05 | 消息积压了该如何处理?
消息队列必知必会
登录|注册

03 | 如何确保消息不会丢失?

李玥 2020-01-14
你好,我是李玥。这节课我们来聊聊丢消息的事儿。
对于刚刚接触消息队列的同学,最常遇到的问题,也是最头痛的问题就是丢消息了。对于大部分业务系统来说,丢消息意味着数据丢失,是完全无法接受的。
其实,现在主流的消息队列产品都提供了非常完善的消息可靠性保证机制,完全可以做到在消息传递过程中,即使发生网络中断或者硬件故障,也能确保消息的可靠传递,不丢消息。
绝大部分丢消息的原因都是由于开发者不熟悉消息队列,没有正确使用和配置消息队列导致的。虽然不同的消息队列提供的 API 不一样,相关的配置项也不同,但是在保证消息可靠传递这块儿,它们的实现原理是一样的。
这节课我们就来讲一下,消息队列是怎么保证消息可靠传递的,这里面的实现原理是怎么样的。当你熟知原理以后,无论你使用任何一种消息队列,再简单看一下它的 API 和相关配置项,就能很快知道该如何配置消息队列,写出可靠的代码,避免消息丢失。

检测消息丢失的方法

我们说,用消息队列最尴尬的情况不是丢消息,而是消息丢了还不知道。一般而言,一个新的系统刚刚上线,各方面都不太稳定,需要一个磨合期,这个时候,特别需要监控到你的系统中是否有消息丢失的情况。
如果是 IT 基础设施比较完善的公司,一般都有分布式链路追踪系统,使用类似的追踪系统可以很方便地追踪每一条消息。如果没有这样的追踪系统,这里我提供一个比较简单的方法,来检查是否有消息丢失的情况。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言

精选留言(8)

  • 洋洋洒洒
    我知道如何处理,还会来这?
    2020-01-16
    2
    9
  • luna🌙
    把整个逻辑加入事务当中,发送回执消息失败也不执行这一次的任务。
    2020-01-21
    1
  • 小明
    每条消息都带个唯一标识?
    2020-01-16
    1
  • Geek_e862d1
    消息发送确认信息的时候增加唯一性
    2020-01-22
  • 毛毛郑
    1.利用消息id
    2.producer和consumer可以利用业务逻辑检查
    2020-01-22
  • mickey
    1.消息尽量做到幂等性
    2.消息增加唯一性表示
    2020-01-19
  • 飘逸的翔云
    消息做业务逻辑唯一性校验,但又增加了业务处理的复杂性,毕竟重复的概率还是很低的,这里面需要做衡量
    2020-01-18
  • archer
    消息做幂等处理,
    2020-01-18
收起评论
8
返回
顶部