kafka笔记3(生产者)

创建Kafka生产者:
Kafka生产者有3个必选属性:
bootstrap.servers broker地址清单,格式为host:port ,清单中不必包含所有broker,但至少2个
key.serializer = org.apache.kafka.common.serialization.Serializer 接口类,生产者使用这个类把键对象序列化为字节数组
Kafka还提供了ByteArraySerializer,StringSerializer,IntegerSerializer 实现类
value.serializer 与key.serializer可以将值序列化
发送消息有3种方式:
发送并忘记(fire-and-forget) 发送消息给服务器,但是不关心是否正常到达
同步发送 使用send()发送信息,返回一个future对象,调用get()方法进行等待,了解信息是否正常发送
异步发送 调用send()函数,并指定一个回调函数,服务器在返回响应时调用该函数
生产者的可选属性:
acks 指定有多少个分区副本收到消息,生产者才会认为消息写入是成功的
ack=0 生产者在成功写入消息之前不会等待任何来自服务器的响应
ack=1 只要集群的首领节点收到信息,生产者就会收到一个来自服务器的成功响应
ack=all 所有参数与复制的节点全部收到消息,生产者才会收到一个来自服务器的响应,这种模式最安全
buffer.memory 设置生产者内存缓冲区大小,生产者使用它缓冲要发送到服务器的消息
compression.type 默认消息发送不使用压缩,该参数可以设置为snappy,gzip,lz4
retries 生产者可以重发消息的次数,默认 每次重试之间等待100ms,可以使用参数 retry.backoff.ms参数改变这个时间间隔
batch.size 指定一个批次可以使用的内存大小,按照字节数计算
linger.ms 指定生产者在发送批次之前等待更多消息加入批次的时间。Kafkaproducer 会在批次填满或linger.ms达到上限时把批次发送出去
client.id 该参数可以指定任意的字符串,服务器会用它识别信息的来源,还可以用在日志和配额指标里
max.in.flight.requests.per.connection 指定生产者在收到服务器响应之前可以发送多少个消息,值越高越占用内存;设为1可以保证消息是按照发送顺序写入服务器的
timeout.ms reuqest.timeout.ms metadata.fetch.timeout.ms
request.timeout.ms 指定生产者在发送数据时等待服务器返回响应的时间
metadata.timeout.ms 指定生产者在获取元数据时等待服务器返回响应时间
tiemout.ms指定broker等待同步副本返回消息确认的时间,与acks的配置相匹配
max.block.ms 指定调用send()或partitionsFor()方法获取元数据时生产者的阻塞时间,当阻塞时间到达max.block.ms时,生产者会抛出异常
max.request.size 控制生产者发送的请求大小,指能发送的单个消息的最大值或单个请求里所有消息的总和
broker对可接收的消息最大值也有自己的限制(message.max.bytes),两边配置最好匹配,避免生产者发送消息被拒绝
receive.buffer.bytes 和 send.buffer.bytes
这2个参数分别指定了TCP socket接收和发送数据包缓冲区大小,默认-1
max.in.flight.requests.per.connection=1 保证了消息的顺序,如果大于1,第一批次写入失败后,重试成功可能会改变消息的顺序
序列化器:
自定义序列化器
Avro序列化
Kafka使用Avro序列器是通过schema注册表来实现的,schema注册表不属于Kafka

kafka笔记3(生产者)的更多相关文章
- Kafka笔记整理(一)
Kafka简介 消息队列(Message Queue) 消息 Message 网络中的两台计算机或者两个通讯设备之间传递的数据.例如说:文本.音乐.视频等内容. 队列 Queue 一种特殊的线性表(数 ...
- Kafka笔记整理(三):消费形式验证与性能测试
Kafka消费形式验证 前面的<Kafka笔记整理(一)>中有提到消费者的消费形式,说明如下: .每个consumer属于一个consumer group,可以指定组id.group.id ...
- kafka笔记——入门介绍
中文文档 目录 kafka的优势 首先几个概念 kafka的四大核心API kafka的基本术语 主题和日志(Topic和Log) 每个分区都是一个顺序的,不可变的队列,并且可以持续的添加,分区中的每 ...
- 《Kafka笔记》3、Kafka高级API
目录 1 Kafka高级API特性 1.1 Offset的自动控制 1.1.1 消费者offset初始策略 1.1.2 消费者offset自动提交策略 1.2 Acks & Retries(应 ...
- kafka学习笔记2:生产者
这次的笔记主要记录一下kafka的生产者的使用和一些重要的参数. 文中主要截图均来自kafka权威指南 主要涉及到两个类KafkaProducer和ProducerRecord. 总览 生产者的主要架 ...
- Kafka笔记—可靠性、幂等性和事务
这几天很忙,但是我现在给我的要求是一周至少要出一篇文章,所以先拿这篇笔记来做开胃菜,源码分析估计明后两天应该能写一篇.给自己加油~,即使没什么人看. 可靠性 如何保证消息不丢失 Kafka只对&quo ...
- Kafka笔记--使用ubuntu为bocker(服务器)windows做producer和comsumer(客户端)
原文连接:http://www.cnblogs.com/davidwang456/p/4201875.html 程序仍然使用之前的一篇博文中的例子 :http://www.cnblogs.com/gn ...
- Kafka笔记--参数说明及Demo
参考资料:http://blog.csdn.net/honglei915/article/details/37563647参数说明:http://ju.outofmemory.cn/entry/119 ...
- kafka 幂等生产者及事务(kafka0.11之后版本新特性)
1. 幂等性设计1.1 引入目的生产者重复生产消息.生产者进行retry会产生重试时,会重复产生消息.有了幂等性之后,在进行retry重试时,只会生成一个消息. 1.2 幂等性实现1.2.1 PID ...
随机推荐
- 使用 Postman 取得 Token 打另一隻 API
使用 Postman 取得 Token 打另一隻 API Spring MVC token 统一校验和user 信息自动获取 使用token和SpringMVC来实现安全的RESTFul接口 spri ...
- Linux 特殊字符_008
Linux 特殊字符用于用户命令行bash环境处理数据,达到一种命令简化使用的功能 通配符 符号 功能 备注 * 代表所有(0到多个)字符 ? 代表任意一个字符 [ ] 匹配[ ]任意一个字符,写法[ ...
- http 请求 post get 长度限制
一.问题起因在某项目释放后Bug统计的附件<释放后问题>里有: 问题 原因 分析 备注 CSV处理时,如果处理的主题数过多,发生URL参数上限的错误: 可变长度的参数通过UR ...
- 真正让HTML标签、DIV、SPAN拥有onfocus和onblur,聚焦和失焦
转载:http://blog.sina.com.cn/s/blog_7dfe67db01010lnq.html 默认火狐或者其他浏览器里DIV和其他普通标签是不具有onfocus和onblur事件的, ...
- SpringBoot------自定义Logback日志
帮助文档: https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/reference/htmlsingle/#boot-featur ...
- JS设计模式——单例模式剖析
转载于原文地址:https://blog.csdn.net/q1056843325/article/details/52933426 举一个通俗的例子,在页面中点击登录按钮,弹出了一个登录浮窗,这个登 ...
- C#简单三层结构设计UI、BLL、DAL、Model实际项目应用例子
C#简单三层结构设计UI.BLL.DAL .Model实际项目应用例子 在实际项目中,程序设计都有他的层次结构,比如MVC.MVP.普通的三层结构等等,不过现在用三层结构的相比可能少了,但是也有一些小 ...
- layui---form表单模块
虽然对layui比较熟悉了,但是今天有时间还是将layui的form表单模块重新看一下. https://www.layui.com/doc/modules/form.html 一.更新渲染 layu ...
- ffmpeg 转换 mp4 成 flv
参考资料: https://addpipe.com/blog/flv-to-mp4/ ffmpeg -i demo.mp4 -c:v libx264 -crf 19 demo.flv 或者 ffmpe ...
- 14.vue路由&脚手架
一.vue路由:https://router.vuejs.org/zh/ 1.定义 let router = new VueRouter({ mode:"history/hash" ...