美文网首页
Kafka如何保证消息不丢失?

Kafka如何保证消息不丢失?

作者: ssttIsme | 来源:发表于2023-05-01 15:46 被阅读0次

Kafka要严格意义上保证消息不丢失,需要从三个方面来设置

  1. 服务器持久化设置为同步刷盘
  2. 生产者设置为同步投递
  3. 消费者设置为手动提交

1.服务器持久化设置为同步刷盘

服务端要设置broker中的一个配置项去保证副本之间的数据同步。

unclean.leader.election.enable = false

同时我们在Producer将消息投递到服务器的时候我们需要将消息进行持久化,也就是我们要去同步到硬盘。注意同步到硬盘过程中会有同步刷盘和异步刷盘。选择同步刷盘就可以保证消息一定不会丢失,就算丢失了我们也可以及时补偿。但是如果选择异步刷盘这个时候消息就有一定的丢失的概率。我们可以通过参数的配置让它去变成同步刷盘。

# 当达到下面的消息数量时,会将数据flush到日志文件中。默认10000
log.flush.interval.messages = 10000
# 当达到下面的时间(ms)时,会执行一次强制的flush操作。interval.ms和interval.messages无论哪个达到,都会flush。默认3000ms
log.flush.interval.ms = 1000
# 检查是否需要将日志flush的时间间隔
log.flush.scheduler.interval.ms = 3000

2.生产者设置为同步投递

生产者使用带有回调通知的send方法

send(msg,callback)

并且设置生产者消息确认机制

acks = all

这样它的消息投递方式采用的才是同步方式。生产者要保证消息能够到达服务器就需要使用到消息的确认机制。也就是说必须确保消息投递到服务器以后并且能够得到投递成功的响应确认服务器它已接收才会继续往下执行。在生产者投递消息的时候它都会去记录日志,然后将消息投递到服务器端,就算服务器宕机了,等到服务器重启之后也可以根据日志信息去完成消息的补偿,这样的话就可以确保消息不丢失。

3.消费者设置为手动提交

在Kafka中消息消费完成之后不会立即删除,而是使用定时的清理策略。也就是说我们消费者要确保消息成功以后我们需要手动ACK提交。如果消息失败的情况下,我们要去不断第重试,所以消费端不能设置自动提交,一定要设置为手动提交才能保证消息不丢失。

enable.auto.commit = false

相关文章

  • kafka broker如何保证消息不丢失

    kafka中的HW、LEO、LSO、LW等分别代表什么? ​ ISR与HW和LEO也有紧密的关系,HW是High ...

  • Kafka ——如何保证消息不会丢失

    前言 Kafka 提供了数据高可靠的特性,但是如果使用不当,你可能无法享受到这一特性,今天我们就来看看如何正确的使...

  • kafka事务

    2018-12-03 Kafka消息保证生产的信息不丢失和重复消费问题 1)使用同步模式的时候,有3种状态保证消息...

  • Kafka保证消息不丢失不重复

    简单总结:消费端重复消费:建立去重表消费端丢失数据:关闭自动提交offset,处理完之后受到移位,enable.a...

  • Kafka消息中间件保证消息不丢失

    大型互联网公司一般都会要求消息传递最大限度的不丢失,比如用户服务给代金券服务发送一个消息,如果消息丢失会造成用户未...

  • 消息队列如何保证消息不丢失

    消息从生产到消费可以经历三个阶段:生产阶段、存储阶段和消费阶段。 生产阶段:在这个阶段,从消息在Producer创...

  • SpringBoot整合RabbitMQ——RabbitMQ进阶

    rabbitMQ如何保证如果消息发送失败,保证其消息不丢失、怎么设置消息过期时间以及死信队列是如何在消息消费失败时...

  • 深入理解Kafka(八) 消息可靠性

    下面我们来介绍下Kafka怎么保证消息的可靠性,在消息中间件里,有一个非常重要的问题就是怎么保证消息不丢失,而这就...

  • kafka无消息丢失配置

    kafka在配置不合理的情况,会丢失消息,当业务的需求不允许消息丢失的场景,就需要配置kafka的一些参数来保证消...

  • MQ随记(2)

    如何保证消息不会被重复消费(保证消息消费时的幂等性) kafka 按照数据进入kafka的顺序,kafka会给每条...

网友评论

      本文标题:Kafka如何保证消息不丢失?

      本文链接:https://www.haomeiwen.com/subject/tfvojdtx.html