如何保证kafka消息不丢失

背景
这里的kafka值得是broker,broker消息丢失的边界需要对齐一下:
1 已经提交的消息
2 有限度的持久化
如果消息没提交成功,并不是broke丢失了消息;
有限度的持久化(broker可用)
生产者丢失消息
producer.send(Object msg) ;
这个发送消息的方式是异步的;fire and forget,发送而不管结果如何;
失败的原因可能有很多,比如网络抖动,发送消息超出大小限制;
怎么破呢?永远使用带有返回值值的消息发送方式,即 producer.send(msg,callback)
通过callback可以准确的告诉你消息是否发送成功了,发送失败了你也可以有处置方法;
网络抖动: 重发
发送消息超出大小:调整消息大小进行发送
这种情况并不是broker丢失消息了,是producer的消息没有提交成功。
消费者丢失消息
kafka消费消息的模型:

即消费消息,设置好offset,类比一下:

说明时候消费者丢失数据呢?即先更新位移,再消费消息,如果消费程序出现故障,没消费完毕,则丢失了消息,此时,broker并不知道。
怎么破?总是先消费消息,再更新位移;这种可能带来消息重复消费的问题,但是不会出现消息丢失问题;
多线程消费丢失消息
即开启了位移自动提交,多线程处理的时候,如果有一个线程出现问题,但是还是提交了位移,会发生消息丢失。
怎么破? 关闭自动提交位移,消费者端配置参数:enable.auto.commit=false
调优broker参数防止消息丢失
主要通过调整配置来保证kafka消息不丢失。

然后就是producer发送消息一定要使用带回调函数的方法,并对发送失败的情况进行处理。
同时写consumer程序的时候先消费再提交;
小结
本节先限定了kafka消息不丢失是针对broker的,基本要求是:消息已提交到broker,而且至少有一个broker可用;
然后从生产者,消费者,配置参数这三个方面介绍了如何防止kafka的消息丢失。
原创不易,关注诚可贵,转发价更高!转载请注明出处,让我们互通有无,共同进步,欢迎沟通交流。
我会持续分享Java软件编程知识和程序员发展职业之路,欢迎关注,我整理了这些年编程学习的各种资源,关注公众号‘李福春持续输出’,发送'学习资料'分享给你!
如何保证kafka消息不丢失的更多相关文章
- 服务器宕机了,Kafka 消息会丢失吗?
大家好,我是树哥. 消息队列可谓是高并发下的必备中间件了,而 Kafka 作为其中的佼佼者,经常被我们使用到各种各样的场景下.随着 Kafka 而来得,还有三个问题:消息丢失.消息重复.消息顺序.今天 ...
- Kafka如何保证消息不丢失不重复
首先需要思考下边几个问题: 消息丢失是什么造成的,从生产端和消费端两个角度来考虑 消息重复是什么造成的,从生产端和消费端两个角度来考虑 如何保证消息有序 如果保证消息不重不漏,损失的是什么 大概总结下 ...
- Kafka消息保证不丢失和重复消费问题
使用同步模式的时候,有3种状态保证消息被安全生产,在配置为1(只保证写入leader成功)的话,如果刚好leader partition挂了,数据就会丢失.还有一种情况可能会丢失消息,就是使用异步模式 ...
- kafka消息会不会丢失
转载:https://baijiahao.baidu.com/s?id=1583469327946027281&wfr=spider&for=pc 消息发送方式 想清楚Kafka发送的 ...
- Kafka的消息会丢失和重复吗?——如何实现Kafka精确传递一次语义
我们都知道Kafka的吞吐量很大,但是Kafka究竟会不会丢失消息呢?又会不会重复消费消息呢? 图 无人机实时监控 有很多公司因为业务要求必须保证消息不丢失.不重复的到达,比如无人机实时监控系统, ...
- Kafka消息丢失
1.Kafka消息丢失的情况: (1)auto.commit.enable=true,消费端自动提交offersets设置为true,当消费者拉到消息之后,还没有处理完 commit interval ...
- 关于MQ的几件小事(四)如何保证消息不丢失
1.mq原则 数据不能多,也不能少,不能多是说消息不能重复消费,这个我们上一节已解决:不能少,就是说不能丢失数据.如果mq传递的是非常核心的消息,支撑核心的业务,那么这种场景是一定不能丢失数据的. 2 ...
- 第1节 kafka消息队列:11、kafka的数据不丢失机制,以及kafka-manager监控工具的使用;12、课程总结
12.kafka如何保证数据的不丢失 12.1生产者如何保证数据的不丢失 kafka的ack机制:在kafka发送数据的时候,每次发送消息都会有一个确认反馈机制,确保消息正常的能够被收到 如果是同步模 ...
- 实际业务处理 Kafka 消息丢失、重复消费和顺序消费的问题
关于 Kafka 消息丢失.重复消费和顺序消费的问题 消息丢失,消息重复消费,消息顺序消费等问题是我们使用 MQ 时不得不考虑的一个问题,下面我结合实际的业务来和你分享一下解决方案. 消息丢失问题 比 ...
随机推荐
- 6.Maven构建过程的各个环节
构建过程中的各个环节 [1]清理:将以前编译得到的旧的class字节码文件删除,为下一次编译做准备 [2]编译:将Java源程序编译成class字节码文件 [3]测试:自动测试,自动调用junit程序 ...
- 白话web安全
伤心往事 梦回大二,那时候沉迷于毒奶粉,甚至国庆都在宿舍与毒奶粉共同度过,但是却发生了一件让我迄今难忘的事情~ 我新练的黑暗武士被盗了!!!干干净净!!! 虽然过了好久了,但是记忆犹新啊,仿佛发生在昨 ...
- html前端之基础篇
HTML介绍 Web服务本质 import socket sk = socket.socket() sk.bind(("127.0.0.1", 8080)) sk.listen ...
- python编程心得(1)
1.创建字典 字典名 = {键名1:键值1,键名2:键值2,...} sanguo = {"诸葛亮草船借箭":"满载而归","关公赴会 ...
- 1057 Stack (30分)(树状数组+二分)
Stack is one of the most fundamental data structures, which is based on the principle of Last In Fir ...
- Java 给 PowerPoint 文档添加背景颜色和背景图片
在制作Powerpoint文档时,背景是非常重要的,统一的背景能让Powerpoint 演示文稿看起来更加干净美观.本文将详细讲述如何在Java应用程序中使用免费的Free Spire.Present ...
- C语言 刷新缓冲区
fflush int fflush(FILE* stream); 用于清空文件缓冲区,如果文件是以写的方式打开 的,则把缓冲区内容写入文件. eg: 1. #include <stdio.h&g ...
- CVPR2018关键字分析生成词云图与查找
今日目标:爬取CVPR2018论文,进行分析总结出提到最多的关键字,生成wordCloud词云图展示,并且设置点击后出现对应的论文以及链接 对任务进行分解: ①爬取CVPR2018的标题,简介,关键字 ...
- Node教程——API接口开发(MangoDB+Express)
一.大纲 大纲: 关于架构, 首先我们的有一个app.js这个就是根路由起点,用来最初的打入口 它的功能有: 1.1 引入模块创建基础的网站服务器, 1.2 导入bodyPasser,过滤还有处理我们 ...
- SQL——语法基础篇(上)
用数据库的方式思考SQL是如何执行的 虽然 SQL 是声明式语言,我们可以像使用英语一样使用它,不过在 RDBMS(关系型数据库管理系统)中,SQL 的实现方式还是有差别的.今天我们就从数据库的角度来 ...
