既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
单个请求发送的最大字节数
public static final String MAX_REQUEST_SIZE_CONFIG = "max.request.size";
reconnect.backoff.ms
用于控制在与 Kafka 服务器连接断开后重新连接的时间间隔。具体来说,它定义了在发起重新连接尝试之间等待的时间量,以毫秒为单位。如果连接失败,生产者将在此时间间隔之后尝试重新连接到 Kafka 服务器
public static final String RECONNECT_BACKOFF_MS_CONFIG = "reconnect.backoff.ms";
reconnect.backoff.max.ms
用于控制重新连接的最大退避时间。具体来说,它定义了在发起重新连接尝试之间等待的最长时间量,以毫秒为单位。如果连接失败,生产者将在此时间间隔之后尝试重新连接到 Kafka 服务器
public static final String RECONNECT_BACKOFF_MAX_MS_CONFIG = "reconnect.backoff.max.ms";
max.block.ms
当 Kafka 队列已满时,生产者将阻塞的最长时间(毫秒),超时后会抛出异常
public static final String MAX_BLOCK_MS_CONFIG = "max.block.ms";
buffer.memory
生产者用于缓冲等待发送到服务器的消息的内存大小。默认是33554432字节(32MB)
public static final String BUFFER_MEMORY_CONFIG = "buffer.memory";
retries
生产者发送失败后的重试次数。默认是0,表示不重试
public static final String RETRIES_CONFIG = "retries";
key.serializer
用于序列化消息键的序列化器类。通常是指实现了Serializer接口的类的全限定名
public static final String KEY_SERIALIZER_CLASS_CONFIG = "key.serializer";
value.serializer
用于序列化消息值的序列化器类
public static final String VALUE_SERIALIZER_CLASS_CONFIG = "value.serializer";
connections.max.idle.ms
客户端与服务器保持空闲连接的最长时间(毫秒)。默认值为 540000(即 9 分钟)。例如:
"900000"
表示客户端与服务器保持空闲连接的最长时间为 15 分钟
public static final String CONNECTIONS_MAX_IDLE_MS_CONFIG = "connections.max.idle.ms";
partitioner.class
用于指定消息将被发送到哪个分区的算法,即分区器的实现类。Kafka 中的主题(topic)通常被划分为多个分区,每个分区都包含有序的消息序列。分区器决定了生产者发送的消息应该被分配到哪个分区中。
通过配置
partitioner.class
,用户可以自定义分区算法,以满足特定的业务需求。Kafka 提供了默认的分区器,也允许用户根据自己的逻辑实现自定义的分区器。例如,以下是配置
partitioner.class
的示例:partitioner.class=com.example.CustomPartitioner
在这个示例中,
com.example.CustomPartitioner
是用户自定义的分区器类的全限定名。该类必须实现 Kafka 提供的org.apache.kafka.clients.producer.Partitioner
接口,该接口定义了确定消息应该被发送到哪个分区的方法。自定义分区器可以根据消息的内容、键(如果有)、以及其他上下文信息,灵活地决定消息应该被发送到哪个分区。这样的自定义分区策略可以帮助实现一些特定的业务逻辑,例如确保相关的消息被发送到相同的分区,以提高消费的局部性。
在没有显式配置
partitioner.class
的情况下,Kafka 使用默认的分区器,该分区器根据消息的键(如果有)或者采用轮询的方式将消息平均分配到所有分区。
public static final String PARTITIONER_CLASS_CONFIG = "partitioner.class";
interceptor.classes
用于指定一组拦截器类。拦截器类是实现 Kafka 接口
org.apache.kafka.clients.producer.ProducerInterceptor
或者org.apache.kafka.clients.consumer.ConsumerInterceptor
的类,用于在生产者或消费者发送或接收消息之前或之后对消息进行处理。拦截器允许用户对消息进行自定义的预处理或后处理。这些操作可以包括但不限于:
- 对消息进行加工、转换、过滤。
- 在消息发送或接收之前或之后记录日志。
- 对消息的时间戳或键进行修改。
通过配置
interceptor.classes
参数,可以指定一组拦截器类,并且它们将按顺序应用于每个消息。这样的拦截器链使得在消息处理过程中可以执行多个不同的操作。例如,以下是配置
interceptor.classes
的示例:interceptor.classes=com.example.MyProducerInterceptor, com.example.MyConsumerInterceptor
在这个示例中,
com.example.MyProducerInterceptor
和com.example.MyConsumerInterceptor
是用户定义的拦截器类的全限定名。这两个类必须分别实现 Kafka 提供的org.apache.kafka.clien