kafka版本:2.12-2.8.1
zookeeper版本:3.7.1
图形化界面:offsetexplorer
win版本安装详见:
windows环境下搭建kafka_kafka windows_一二三向前进的博客-CSDN博客
导包
Spring Boot 会自动根据项目所使用的 Spring Boot 版本和 spring-kafka starter 的版本,来选择合适的 Kafka 版本。
<dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> </dependency>
配置
yml格式(只包含kafka部分配置)
spring: kafka: # 指定kafka server的地址,集群配多个,中间,逗号隔开 bootstrap-servers: localhost:9092 producer: # 重试次数 retries: 6 # 批量发送的消息数量 batch-size: 1000 # 32MB的批处理缓冲区 buffer-memory: 33554432 # 默认消费者组 consumer: group-id: consumer-group # 最早未被消费的offset auto-offset-reset: earliest # 批量一次最大拉取数据量 max-poll-records: 4000 # 是否自动提交 enable-auto-commit: true # 自动提交时间间隔,单位ms auto-commit-interval: 1000
代码
消费者
@KafkaListener(groupId = "consumer", topics = PropertiesConstans.MONITOR_PROPERTIES) public void listen(String monitor) { System.out.println("收到消息" + monitor); }//topics改成需要监听的主题名称
生产者
注入KafkaTemplate
调用send方法,传入主题名称和需要传入的数据
@SpringBootTest(classes = KafkaApplication.class) public class text { @Autowired private KafkaTemplate<String,String> kafkaTemplate; @Test public void add(){ String s = "测试数据"; kafkaTemplate.send(PropertiesConstans.MONITOR_PROPERTIES,s); }
测试
运行本地kafka和zookeeper
启动springboot的kafka监听服务
运行测试类,对主题添加数据
监听成功
打开图形化界面,看到消息成功存入指定的主题中
默认存储三天
三天内kafka只会对消费过的消息做一个已消费的标记,所以数量只增不少