前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >7.ProducerConfig详解(下)

7.ProducerConfig详解(下)

作者头像
ParkJun
发布2020-07-14 10:43:23
7650
发布2020-07-14 10:43:23
举报
文章被收录于专栏:ParkJun随笔ParkJun随笔

ProducerConfig类

buffer.memory

重要性:高

类型:Long

默认值:33554432字节,即32M

producer可以用于缓存等待发送到服务端的消息记录的缓冲区大小,当消息记录发送到缓冲区的速度大于传输到server的速度,那么等待发送的消息记录将会放在缓冲区,缓冲区如果满了,那么producer会阻塞max.block.ms指定的毫秒数,超过该毫秒数时,将抛出异常。

注意:该缓冲区的大小设置与整个producer需要使用到的producer大体一致,但是要注意并不是所有的缓冲区都是用来存放待发送的records的,比如还有一部分用于压缩数据(当压缩数据的选项开启),还有一部分用于维护in-flight(正在发送)的请求列表。

retry.backoff.ms

重要性:低

类型:Long

默认值:100毫秒

当一个producer到指定的partition的请求request失败时,在重连之前,需要等待的毫秒数。这是为了避免在某些失败的场景下,过于密集地重复发送请求。

compression.type

重要性:高

类型:String

默认值:"none"

producer对数据使用的压缩类型,包括:

none:无压缩类型 gzip snappy lz4 producer在压缩数据时,是对所有batches的数据一起进行压缩,而不是一个batch一个batch压缩,所以,一次压缩的batches越多,压缩率越高,压缩效果越好。

metrics.sample.window.ms

重要性:低

类型:Long

默认值:30000毫秒,即30秒

计算度量样本的时间窗口,度量用于kafka监控。

metrics.num.samples

重要性:低

类型:int

默认值:2

维护用于计算度量metrics的样本数量。

metrics.recording.level

重要性:低

类型:String

默认值:info

用于metrics的最高纪录等级。

metric.reporters

重要性:低

类型:List

默认值:Collections.emptyList()

被作为metrics reporter的类的列表,这些类都实现了接口org.apache.kafka.common.metrics.MetricsReporter,因此当有新的metric生成时,这些reporters类都可以接收到通知。通常都会包含JmxReporter类,以用于注册JMX统计。

JMX(Java Management Extensions) kafka使用jmx调取kafka broker的内部数据,来监控一些敏感的数据。

max.in.flight.requests.per.connection

重要性:低

类型:int

默认值:5

在单个连接中,producer客户端在阻塞之前,可以允许未被确认的最大请求数,即当一个连接中未被确认的请求数超过了该设置,那么该producer客户端将会阻塞。注意:如果该值设置得比1大,当出现发送失败的情况,且retries配置项又开启时,那么存在消息被重新排序的风险。

retries

重要性:低

类型:int

默认值:0,表示不重试

当该值被设置成大于0时,客户端会重新发送消息,并且记录发送失败的错误。注意,该重试配置项和客户端因收到错误而重发是一样的。当retries配置项大于0,且max.in.flight.requests.per.connection配置项的值大于1时,存在将重试记录重新排序的风险,也就是说,消息记录的顺序可能会被打乱。原因是:当两个batch被发送到同一个partition时,如果第一个失败,而第二个成功,那么第一个会被重试,此时第二个batch就排在前面了。

key.serializer

重要性:高

类型:Class

默认值:无

消息记录key的序列化类。

value.serializer

重要性:高

类型:Class

默认值:无

消息记录中value的序列化类。

connections.max.idle.ms

重要性:中

类型:Long

默认值:540000毫秒,即9分钟

如果一个连接空闲时间超过该配置值,那么该连接将会被关闭。

partitioner.class

重要性:中

类型:Class

默认值:无

计算消息记录要分配到哪个partitioner的类。在前面的文章【大数据实践】Kafka生产者编程(3)——Interceptor & Partitioner中,对partitioner有详细讲解。

interceptor.classes

重要性:低

类型:List

默认值: Collections.emptyList()

拦截链,在前面的文章【大数据实践】Kafka生产者编程(3)——Interceptor & Partitioner有详细讲解。

enable.idempotence

重要性:低

类型:Boolean

默认值:false

是否使用幂等性。如果设置为true,表示producer将确保每一条消息都恰好有一份备份;如果设置为false,则表示producer因发送数据到broker失败重试使,可能往数据流中写入多分重试的消息。

注意:如果使用idempotence,即enable.idempotence为true,那么要求配置项max.in.flight.requests.per.connection的值必须小于或等于5;配置项retries的值必须大于0;acks配置项必须设置为all。如果这些值没有被用户明确地设置,那么系统将自动选择合适的值。如果设置的值不合适,那么会抛出ConfigException异常。

transaction.timeout.ms

重要性:低

类型:Int

默认值:60000毫秒,即60秒

在主动中止(aborting)一个事务transaction之前,事务协调员(transaction coordinator)最多等待的最长时间——为了让producer更新事务状态。如果该值大于kafka broker中设置的transaction.max.timeout.ms配置项的值,那么producer 的请求将因为InvalidTransactionTimeout错误而失败。

transactional.id

重要性:低

类型:String

默认值:null,表示transactions不能被使用

配置TransactionalId,用于事务的递交(delivery)。该配置项可以为跨多个producer的session提供可靠性语义,因为它可以保证在开始一个新的事务之前,使用相同事务ID(TransactionalId)的事务一定会完成。

注意:如果配置了transactional.id的值,那么必须配置enable.idempotence为true。在发布环境中,事务要求一个kafka集群必须有最少3个brokers(推荐设置)。在开发环境中,可以通过调整broker的配置项transaction.state.log.replication.factor来进行调整,以方便开发。

ProducerConfig上半部分

本文归作者所有,未经作者允许,不得转载

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ProducerConfig类
  • buffer.memory
  • retry.backoff.ms
  • compression.type
  • metrics.sample.window.ms
  • metrics.num.samples
  • metrics.recording.level
  • metric.reporters
  • max.in.flight.requests.per.connection
  • retries
  • key.serializer
  • value.serializer
  • connections.max.idle.ms
  • partitioner.class
  • interceptor.classes
  • enable.idempotence
  • transaction.timeout.ms
  • transactional.id
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档