下载解压 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. Android 中指纹识别

    Android从6.0系统开始就支持指纹认证功能了,指纹功能还需要有硬件支持才行 指纹与手机系统设置的指纹进行匹配 如图: 在LoginActivity 中弹出指纹验证Fragment,验证成功进入M ...

  2. 完整且易读的微信小程序的注册页面(包含倒计时验证码、获取用户信息)

    目录 1.页面展示 2.wxml代码 3.wxss代码 4.js代码 1.页面展示 2.wxml代码 <!--pages/register/register.wxml--> <scr ...

  3. [b0017] python 归纳 (三)_类名当参数传入

    # -*- coding: UTF-8 -*- """ 测试传入类名 总结: 似乎python里面的一切东西都可以当参数传入 函数或者方法 ""&qu ...

  4. odoo10学习笔记十二:web controller

    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/11189332.html 一:路由 odoo.http.route(route=None, **kw) 装饰器 ...

  5. Python列表操作与深浅拷贝(5)——数字处理函数、类型判断、列表链表队列栈

    python内建数据结构 分类 数值型: int float complex bool 序列对象: 字符串str 列表list 元组tuple 键值对: 集合set 字典dict 数值型 (list ...

  6. 使用hutool工具类进行导出

    引入依赖为: <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</ ...

  7. csp 201709-2 优先队列模拟

    数据规模: 用优先队列对各个事件的发生先后记录即可: #include<iostream> #include<queue> using namespace std; ]; st ...

  8. day23_7.29 多态和类的内置方法

    一.多态 在现实生活中,多态也会体现.如对于水这种物质,有固态:冰,液态:常态,气态:水蒸气, 在程序中,其官方定义是:多个不同对象可以相应同一方法,产生不同的结果. 而在python中,多态不是一个 ...

  9. 接口规范、容错处理规则、aph备份数据规则

    前话:前后解耦,前端开发环节使用APH,后台开发环节postman(可考虑为后台也做一个aph后台版) 1.api标准:标识符(ret:1为正常数据,0为接口报错),数据体(data:api的数据容器 ...

  10. Python进阶-XIII 导入模块和包 异常处理

    一.模块的导入 1).import # 测试一:money与my_module.money不冲突 import my_module money=10 print(my_module.money) '' ...