背景
最近在做一个物联网paas项目,实时设备预警结合kafka流式实时计算的特定,采用springBoot结合kafka来完成
kafka环境搭建——kafka基本命令及环境搭建
依赖
<!-- kafka -->
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>
配置参数
#kafka配置
#broker地址,多个使用英文逗号分隔
spring.kafka.bootstrap-servers=127.0.0.1:9092
#指定序列号与反序列化
spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.StringDeserializer
spring.kafka.consumer.value-deserializer=org.apache.kafka.common.serialization.StringDeserializer
spring.kafka.consumer.key-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.consumer.value-serializer=org.apache.kafka.common.serialization.StringSerializer
#要使用消费者必须指定group-id
spring.kafka.consumer.group-id=server
spring.kafka.consumer.enable-auto-commit=true
spring.kafka.consumer.auto-commit-interval=1000
#如果消费的topic不存在,是否在启动时抛出异常,false为不抛出
spring.kafka.listener.missing-topics-fatal=false
#kafka定时检查的通配符,发现新分区需要5分钟的间隔
#默认的offset-reset是latest,导致分配分区前的间隔时间内,新分区的消息会丢失
#设置为earliest从头消费该分区数据,即使新分区,也会消费间隔时间内产生的旧消息
spring.kafka.consumer.auto-offset-reset=earliest
生产者
自动注入springboot自动配置的KafkaTemplate,其中包含几个常用的生产方法,key可有可无,主要是为了优化分区,相同key(不为null)的消息会分配到相同分区
//指定topic和value
public ListenableFuture<SendResult<K, V>> send(String topic, @Nullable V data