Kafka入门之producer

一些重要的参数:
1.acks指定了在给producer发送响应前,leader broker必须要确保已成功写入该消息的副本数.当前acks有3个取值,0,1,和all
2.buffer.memory:producer启动时会首先创建一块内存缓冲区用于保存待发送的消息,然后由另一个专属的线程负责从缓冲区中读取消息执行真正的发送。默认32MB。生产过快会抛异常
3.compression.type:是否压缩消息
4.retries:可重试异常充实次数,默认为0不进行重试。
5.batch.size:默认16384即16KB producer会将发往同一分区的多条消息封装进一个batch中。当batch满了之后,producer会发送batch中的所有消息。不过,producer并不总是等待batch满了才发送消息,很有可能当batch还有很多空间时producer就发送该batch。
6.linger.ms:控制消息发送延时行为,默认为0表示消息需要立即发送,无须关心batch是否已被填满
7.max.request.size:能够发送的最大消息大小.默认1048576字节
8.request.timeout.ms当producer发送请求给broker后,broker需要在规定的时间范围内将处理结果返回给producer。默认是30秒。超时回调函数显示抛出TimeoutException异常交由用户处理。
无消息丢失配置:
producer端
block.on.full=true缓冲区填满时producer处于阻塞状态并停止接受新的消息而不是抛出异常。否则producer生产速度过快会耗尽缓冲区。新版本0.10。0.0之后可以不用理会这个参数,转而设置max.block.ms即可
ack=all所有isr同步
retries=Integer.MAX_VALUE可重试异常无限重试
max.in.flight.requests.per.connection=1设置该参数为1主要是为了防止topic同分区下的消息乱序问题。这个参数实际效果其实限制了producer在单个broker连接上能够发送的未响应请求的数量,因此,如果设置成1,则producer在某个broker发送响应之前将无法再给该broker发送producer请求。
使用带回调机制的send,
在Callback的失败处理逻辑中显式调用KafkaProducer.close(0),这样做的目的是为了处理消息的乱序问题。若不使用close(0),默认情况下producer会被允许将未完成的消息发送出去,这样就可能造成消息乱序。但是这样还怎么重试????
broker配置
unclean.leader.election.enable=false关闭unclean leader选举,即不允许非isr中的副本被选举为leader,从而避免broker端因日志水位截断而造成的消息丢失。
replication.factor>=3一致性算法三备份原则
min.insync.replicas>1用于控制某条消息至少被写入到isr中的多少个副本才算成功,设置成大于1是为了提升producer端发送语义的持久性。只有在acks被设置成all或-1时这个参数才有意义。
确保replication.factor>min.insync.replicas若2者相等,那么只要有一个副本挂掉,分区就无法正常工作,虽然有很高的持久性但可用性被极大地降低了,推荐配置成replication.factor=min.insync.replicas+1
Kafka配置实例:
private KafkaTemplate<String, String> createKafkaTemplate() {
Map<String, Object> properties = new HashMap();
properties.put("bootstrap.servers", this.servers);
properties.put("acks", "0");
properties.put("retries", 1);
properties.put("batch.size", this.batchSize);
properties.put("linger.ms", 1000);
properties.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
properties.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
return new KafkaTemplate(new DefaultKafkaProducerFactory(properties));
}
Kafka入门之producer的更多相关文章
- 【Kafka入门】Kafka基础结构和知识
基本概念的总结 在基本的Kafka架构中,producer将消息发布到Kafka话题中,一个Kafka话题通常指消息的类别或者名称,Kafka话题被集群中一个充当Kafka server角色的 bro ...
- kafka 入门笔记 #1
kafka 入门笔记(#1) 单机测试 下载版本,解压 tar -xzf kafka_2.11-0.10.1.1.tgz cd kafka_2.11-0.10.1.1 启动服务 Kafka用到了Zoo ...
- Kafka入门介绍
1. Kafka入门介绍 1.1 Apache Kafka是一个分布式的流平台.这到底意味着什么? 我们认为,一个流平台具有三个关键能力: ① 发布和订阅消息.在这方面,它类似一个消息队列或企业消息系 ...
- Kafka入门 --安装和简单实用
一.安装Zookeeper 参考: Zookeeper的下载.安装和启动 Zookeeper 集群搭建--单机伪分布式集群 二.下载Kafka 进入http://kafka.apache.org/do ...
- 转 Kafka入门经典教程
Kafka入门经典教程 http://www.aboutyun.com/thread-12882-1-1.html 问题导读 1.Kafka独特设计在什么地方?2.Kafka如何搭建及创建topic. ...
- Kafka 入门和 Spring Boot 集成
目录 Kafka 入门和 Spring Boot 集成 标签:博客 概述 应用场景 基本概念 基本结构 和Spring Boot 集成 集成概述 集成环境 kafka 环境搭建 Spring Boot ...
- _00017 Kafka的体系结构介绍以及Kafka入门案例(0基础案例+Java API的使用)
博文作者:妳那伊抹微笑 itdog8 地址链接 : http://www.itdog8.com(个人链接) 博客地址:http://blog.csdn.net/u012185296 博文标题:_000 ...
- Kafka入门宝典(详细截图版)
1.了解 Apache Kafka 1.1.简介 官网:http://kafka.apache.org/ Apache Kafka 是一个开源消息系统,由Scala 写成.是由Apache 软件基金会 ...
- 【转帖】Kafka入门介绍
Kafka入门介绍 https://www.cnblogs.com/swordfall/p/8251700.html 最近在看hdoop的hdfs 以及看了下kafka的底层存储,发现分布式的技术基本 ...
随机推荐
- drf 认证校验及源码分析
认证校验 认证校验是十分重要的,如用户如果不登陆就不能访问某些接口. 再比如用户不登陆就不能够对一个接口做哪些操作. drf中认证的写法流程如下: 1.写一个类,继承BaseAuthenticatio ...
- NB-IoT的HARQ过程是怎么样的
NB-IoT的HARQ是一种将前向纠错(Forward Error Correction,FEC)编码和ARQ相结合而形成的技术.HARQ的基本原理是缓存没有正确接收到的数据,并且将重传数据和原始数据 ...
- 如果在Yii中,使用AR查询,不直接写sql,则在使用的时候会报错
如果在Yii中,使用AR查询,不直接写sql,则在使用的时候会报错 Student::find() ->select("id,name,from_unixtime(create_tim ...
- DP百题练(一)
目录 DP百题练(一) 线性 DP 简述 Arithmetic Progressions [ZJOI2006]物流运输 LG1095 守望者的逃离 LG1103 书本整理 CH5102 移动服务 LG ...
- pycharm新建项目时选择virtualenv的说明
虚拟环境及venv和virtualenv介绍:https://www.cnblogs.com/mind18/p/13877170.html pip介绍:https://www.cnblogs.com/ ...
- python_摘要_加密
import hashlib def get_md5(username,password): md5 = hashlib.md5(username.encode('utf-8')) # 加盐 md5. ...
- GSO和TSO
http://www.cnhalo.net/2016/09/13/linux-tcp-gso-tso/ TSO(TCP Segmentation Offload): 是一种利用网卡来对大数据包进行自动 ...
- windows10 vs2017编译opencv_contrib3.4.7的小坑及编译好的资源
1.注意要用正斜杠 / 不要用 \ https://github.com/opencv/opencv/issues/11655 CMake Error at cmake/OpenCVModu ...
- 企业网络拓扑VRRP主备功能实例(一)
组网图形 VRRP主备备份简介 通常,同一网段内的所有主机上都存在一条相同的.以网关为下一跳的缺省路由.主机发往其他网段的报文将通过缺省路由发往网关,再由网关进行转发,从而实现主机与外部网络的通信. ...
- 删除ceph集群mds
ceph集群新搭建以后是只有一个默认的存储池rbd的池 ## 创建文件接口集群 1.创建一个元数据池 [root@mytest ~]# ceph osd pool create metadata 20 ...