依赖
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>
配置文件: 部分为自定义
KafkaTemplateConfig:
isOpen: true
spring:
kafka:
#指定kafka地址可以多个
bootstrap-servers: 192.168.99.100:9092
producer:
#消息发送失败重试次数
retries: 3
#重试间隔
retry_backoff_ms: 500
#压缩消息,支持四种类型,分别为:none、lz4、gzip、snappy,默认为none,lz4压缩比最高
compression-type: none
#发送缓冲区大小32M
buffer-memory: 33554432
#去缓冲区中一次拉16k的数据,发送到broker
batch-size: 16384
#每条消息大小限制 1M
max-request_size: 1048576
#设置发送延时时间,如果在设置的时间内依然没有达到batch-size,依然发出消息给kafka集群
linger_ms: 30
#失败重试时,保证消息顺序性,会降低吞吐量
max_in_flight_requests_per_connection: 1
#开启发送消息幂等性(单分区)
enable_idempotence: true
#生产者空间不足时阻塞的时间,默认60s
max_block_ms: 6000
#acks = 0 如果设置为零,则生产者将不会等待来自服务器的任何确认,该记录将立即添加到套接字缓冲区并视为已发送。在这种情况下,无法保证服务器已收到记录,并且重试配置将不会生效(因为客户端通常不会知道任何故障),为每条记录返回的偏移量始终设置为-1。
#acks = 1 这意味着leader会将记录写入其本地日志,但无需等待所有副本服务器的完全确认即可做出回应,在这种情况下,如果leader在确认记录后立即失败,但在将数据复制到所有的副本服务器之前,则记录将会丢失。
#acks = all 这意味着leader将等待完整的同步副本集以确认记录,这保证了只要至少一个同步副本服务器仍然存活,记录就不会丢失,这是最强有力的保证,这相当于acks = -1的设置。
acks: -1
#key,value序列化器选择
key-serializer: org.apache.kafka.common.serialization.StringSerializer
value-serializer: org.apache.kafka.common.serialization.StringSerializer
listener:
#是否开启批量处理
batch_listener: true
#线程数
concurrency: 3
#RECORD 当每⼀条记录被消费者监听器(ListenerConsumer)处理之后提交
#BATCH 当每⼀批poll()的数据被消费者监听器(ListenerConsumer)处理之后提交
#TIME 当每⼀批poll()的数据被消费者监听器(ListenerConsumer)处理之后,距离上次提交时间⼤于TIME时提交
#COUNT 当每⼀批poll()的数据被消费者监听器(ListenerConsumer)处理之后,被处理record数量⼤于等于COUNT时提交
#COUNT_TIME TIME | COUNT 有⼀个条件满⾜时提交
#MANUAL 当每⼀批poll()的数据被消费者监听器(ListenerConsumer)处理之后, ⼿动调⽤Acknowledgment.acknowledge()后提交
#MANUAL_IMMEDIATE ⼿动调⽤Acknowledgment.acknowledge()后⽴即提交,⼀般使⽤这种
ack-mode: manual_immediate
#消费超时时间
poll-timeout: 3000
consumer:
#指定默认消费者group id
group-id: testGroup
#earliest
#当各分区下有已提交的offset时,从提交的offset开始消费;无提交的offset时,从头开始消费
#latest
#当各分区下有已提交的offset时,从提交的offset开始消费;无提交的offset时,消费新产生的该分区下的数据
#none
#topic各分区都存在已提交的offset时,从offset后开始消费;只要有一个分区不存在已提交的offset,则抛出异常
auto-offset-reset: earliest
# 是否开启自动提交
enable-auto-commit: false
#key, value的反序列化器
key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
value-deserializer: org.apache.kafka.commo