下载解压 kafka 后,在 kafka/config 下有 3 个配置文件与主题及其生产、消费相关。
  • server.properties--服务端配置
  • producer.properties--生产端配置
  • consumer.properties--消费端配置
这里主要介绍生产者和消费者的配置。
 
一、生产者配置
producer.properties
#指定连接 Kafka 集群所需的 broker 地址清单
bootstrap.servers=localhost: #producer 用于压缩数据的压缩类型,压缩类型有none、gzip、snappy,默认是无压缩。
#压缩最好用于批量处理,批量处理消息越多,压缩性能越好。
#消息被压缩后发送到broker集群,broker集群是不会进行解压缩的,只会把消息发送到消费者集群,然后由消费者来解压缩。
compression.type=none #生产者生产的消息被发送到哪个block,需要一个分组策略。
#分区处理类,默认partitioner基于 key 的 hash 表。
#partitioner.class= # 在向 producer 发送 ack 之前,broker允许等待的最大时间,否则会发送错误到客户端。
#request.timeout.ms= # 控制 KafkaProducer.send() 和 KafkaProducer.partitionsFor() 将阻塞多长时间。
#max.block.ms= #当消息到达的速度比发送速度快,会出现生产者组将发送的消息组合成单个批量请求的现象,或者客户端希望减少请求数量,
#设置此参数,生产者将等待一个延迟,以便和其他的消息组合成一个批次发出,减少发送的请求数。
#linger.ms= #请求的最大字节数。
#max.request.size= #生产者批处理消息的字节数,以减少请求次数,这将改善client与server之间的性能。
#batch.size= # 生产者可以用来缓存消息的缓冲区大小。
#buffer.memory=

在网上看到生产端有个 acks 参数,但这个配置文件没有,先在 Kafka 的官网手册了解了一下,留待后面深入了解。

acks 这个参数用来指定分区中必须要有多少个副本收到这条消息,之后生产者才会认为这条消息是成功写入的。acks 参数有 3 个值,为 1、0、-1:
  • acks = 1,默认值:
    生产者发送消息之后,只要分区的 leader 副本成功写入消息,就会收到来自服务端的成功响应。
    如果消息因为leader 副本崩溃等原因无法写入 leader 副本,生产者就会收到一个错误的响应,为了避免消息丢失,生产者可以选择重发消息。
    为了保证消息不丢失,至少要设置为1,也就是至少保证 leader 将消息保存成功。
  • acks = 0:
    生产者发送消息之后不需要等待任何服务端的响应。
    如果在消息从发送到写入 Kafka 的过程中出现某些异常,导致 Kafka 并没有收到这条消息,生产者也无从得知,消息也就丢失了。
    在其他配置环境相同的情况下,acks 设置为 0 可以达到最大吞吐量。
  • acks = -1:
    生产者在消息发送之后,需要等待 ISR 中的所有副本都成功写入消息之后才能够收到来自服务端的成功响应,也就是不仅是主的分区将消息保存成功了,而且其所有的分区的副本数也都同步好了,才会被认为发动成功。
    在其他配置环境相同的情况下,acks 设置为 -1 可以达到最强的可靠性。但这并不意味着消息就一定可靠,因为 ISR 中可能只有 leader 副本,这样就退化成了 acks=1 的情况。 
 
更多配置可以参见 Producer 配置
 
二、消费者配置
consumer.properties  
#用于建立初始连接到kafka集群的"主机/端口对"配置列表。
bootstrap.servers=localhost:
#消费者所在消费组的唯一标识
group.id=test-consumer-group
## What to do when there is no initial offset in Kafka or if the current
# offset does not exist any more on the server: latest, earliest, none
#当Kafka没有初始偏移量或服务器不再有当前的偏移量怎么办?
#latest:当各分区下有已提交的offset时,从提交的offset开始消费;无提交的offset时,消费新产生的该分区下的数据
#earliest:当各分区下有已提交的offset时,从提交的offset开始消费;无提交的offset时,从头开始消费
#none:topic各分区都存在已提交的offset时,从offset后开始消费;只要有一个分区不存在已提交的offset,则抛出异常
auto.offset.reset=

该配置文件中的参数不多,更多配置可以参见 Consumer 配置

Kafka学习笔记3--Kafka的生产者和消费者配置的更多相关文章

  1. Kafka学习笔记之Kafka三款监控工具

    0x00 概述 在之前的博客中,介绍了Kafka Web Console这 个监控工具,在生产环境中使用,运行一段时间后,发现该工具会和Kafka生产者.消费者.ZooKeeper建立大量连接,从而导 ...

  2. Kafka学习笔记1——Kafka的安装和启动

    一.准备工作 1. 安装JDK 可以用命令 java -version 查看版本

  3. 【kafka学习笔记】kafka的基本概念

    在了解了背景知识后,我们来整体看一下kafka的基本概念,这里不做深入讲解,只是初步了解一下. kafka的消息架构 注意这里不是设计的架构,只是为了方便理解,脑补的三层架构.从代码的实现来看,kaf ...

  4. Kafka学习笔记之Kafka性能测试方法及Benchmark报告

    0x00 概述 本文主要介绍了如何利用Kafka自带的性能测试脚本及Kafka Manager测试Kafka的性能,以及如何使用Kafka Manager监控Kafka的工作状态,最后给出了Kafka ...

  5. Kafka学习笔记之Kafka Consumer设计解析

    0x00 摘要 本文主要介绍了Kafka High Level Consumer,Consumer Group,Consumer Rebalance,Low Level Consumer实现的语义,以 ...

  6. Kafka学习笔记之Kafka背景及架构介绍

    0x00 概述 本文介绍了Kafka的创建背景,设计目标,使用消息系统的优势以及目前流行的消息系统对比.并介绍了Kafka的架构,Producer消息路由,Consumer Group以及由其实现的不 ...

  7. RabbitMQ学习笔记(三、生产者与消费者)

    目录: 细说交换器 细说队列 发送消息 消费消息 确认与拒绝 细说交换器: 1.方法: public AMQP.Exchange.DeclareOk exchangeDeclare(String ex ...

  8. Kafka学习笔记之Kafka High Availability(下)

    0x00 摘要 本文在上篇文章基础上,更加深入讲解了Kafka的HA机制,主要阐述了HA相关各种场景,如Broker failover,Controller failover,Topic创建/删除,B ...

  9. Kafka学习笔记之Kafka High Availability(上)

    0x00 摘要 Kafka在0.8以前的版本中,并不提供High Availablity机制,一旦一个或多个Broker宕机,则宕机期间其上所有Partition都无法继续提供服务.若该Broker永 ...

  10. Kafka学习笔记之Kafka自身操作日志的清理方法(非Topic数据)

    0x00 概述 本文主要讲Kafka自身操作日志的清理方法(非Topic数据),Topic数据自己有对应的删除策略,请看这里. Kafka长时间运行过程中,在kafka/logs目录下产生了大量的ka ...

随机推荐

  1. 春秋-SQLi题

    这道题挺好的 学到的知识 sprintf()构成的sql注入漏洞 题目环境今天做的时候坏了 留下这几篇博客学习 https://blog.csdn.net/nzjdsds/article/detail ...

  2. Android源码分析(六)-----蓝牙Bluetooth源码目录分析

    一 :Bluetooth 的设置应用 packages\apps\Settings\src\com\android\settings\bluetooth* 蓝牙设置应用及设置参数,蓝牙状态,蓝牙设备等 ...

  3. 深入Java源码剖析之Set集合

    Java的集合类由Collection接口和Map接口派生,其中: List代表有序集合,元素有序且可重复 Set代表无序集合,元素无序且不可重复 Map集合存储键值对 那么本篇文章将从源码角度讨论一 ...

  4. postgreSQL 自动递增序号

    创建表格 CREATE TABLE test ( id serial, name ) not null ); 查询当前创建好的表格 插入数据 BEGIN TRANSACTION; INSERT INT ...

  5. 机器学习(4)——PCA与梯度上升法

    主成分分析(Principal Component Analysis) 一个非监督的机器学习算法 主要用于数据的降维 通过降维,可以发现更便于人类理解的特征 其他应用:可视化.去噪 通过映射,我们可以 ...

  6. 每次都能让人头大的 Shader -- 从一次简单的功能说起

    最近有个功能, 要渲染从主相机视角看到的另一个相机的可视范围和不可见范围, 大概如下图 : 简单来说就是主相机视野和观察者相机视野重合的地方, 能标记出观察者相机的可见和不可见, 实现原理就跟 Sha ...

  7. 关于如何自定义修改pytest-html报告深度学习总结

    第一.pytest-html执行命令总结: pytest test_case.py --html=report.html --self-contained-html 直接html独立显示pytest ...

  8. JS高阶---IIFE&&函数前加;

    IIFE( 立即调用函数表达式)是一个在定义时就会立即执行的 JavaScript 函数. 全称为Immediately Invoked Function Expression 有时如果不加:会出现一 ...

  9. JS闭包—你不知道的JavaScript上卷读书笔记(二)

    关于闭包,初学者会被绕的晕头转向,在学习的路上也付出了很多精力来理解. 让我们一起来揭开闭包神秘的面纱. 闭包晦涩的定义 看过很多关于闭包的定义,很多讲的云里雾里,晦涩难懂.让不少人以为闭包是多么玄乎 ...

  10. 2.第一个Vue程序

    1.IDEA中安装Vue.js插件 2.建立项目以及html文件 1.创建一个 HTML 文件 2.引入 Vue.js <script src="https://cdn.jsdeliv ...