上一章描述springboot支持对于topic进行配置管理,本章主要叙说springboot对于produce支持。
这里通过两种方式
第一种:由springboot框架来初始化基础bean,我们只需要在yml配置文件中编写配置即可。如下图所示(常规配置 具体所有配置可参考http://kafka.apache.org/documentation/ 的producer)
可参考进行配置属性:
spring.kafka:
bootstrap-servers: localhost:9092
client-id: test1
##以下配置可都在kafak 的config中 producer.properties 中找到对应
producer:
##默认批次大小 默认0 关闭批提交 用于指定 ProducerBatch 可以复用内存区域的大小
batch-size: 16384
##客户端id
client-id: clientId
##key序列化器 需要实现org.apache.kafka.common.serialization.Serializer
key-serializer:
##value序列化器 需要实现org.apache.kafka.common.serialization.Serializer
value-serializer:
##ISR列表所有副本数据写入
acks: -1
##是否压缩 实际上就是空间换时间 会加大影响时间 但降低存储空间 默认none 可设置 gzip snappy lz4
compression-type: none
##发生异常时重试次数
retries: 0
##可自定义其它参数例如connections.max.idle.ms 多少秒关闭空闲连接
properties:
##用来控制 KafkaProducer send 方法和partitionsFor()方法的阻塞时间。当生产者的发
#送缓冲区己满,或者没有可用的元数据时 ,这些方法就会阻塞
max.block.ms: 60000
##设置分区器
partitioner.class:
##设置拦截器
interceptor.classes:
##客户端即使在指定时间未被触发元数据更新也会进行强制更新 默认5min
metadata.max.age.ms: 300000
##生产者将等待一定时间后再次发送
##作用是可以讲待发送的记录聚合在一起进行一次发送 减少网络开销但对于单条消息会加大响应时间 默认是0不延时
##可以在对于响应时间要求不高 但吞吐量高的场景中使用
linger.ms: 0
##生产者默认发送单条消息的最大数 默认1m
max.request.size=: 1048576
##生产者客户端中用于缓存消息的缓冲区大小 默认32m 如果生产者发送消息的速度超过发
#送到服务器的速度 ,则会导致生产者空间不足(这时候需要适当进行调大),这个时候send就会进行阻塞 阻塞时间(max.block.ms)还未发送就会触发异常
buffer-memory: 33554432
第二种:我们自定义初始化基础bean后交由框架管理(会有助于我们理解springboot对于kafka的支持)
话不多说直接上源码:
第一步:初始化配置
/**
* 编写统一生产者配置类
* @author fangyuan
*/
@Configuration
public class KafkaProducerConfigure {