去kafka官网下载3.0.0版本
https://kafka.apache.org/downloads
将压缩包上传到服务器
tar -zxvf kafka_2.12-3.0.0.tgz解压
目录结构如下
cd config
ll
zookeeper.properties配置不用动,如果端口占用可以修改一下端口
编辑kafka的server.properties
#节点唯一标识
broker.id=1
#监听端口
listeners=PLAINTEXT://:9091
#对外暴露ip和端口
advertised.listeners=PLAINTEXT://118.178.239.30:9091
#消息存储位置
log.dirs=/root/kafka/kafka3/data/kafka-logs
#zookeeper地址
zookeeper.connect=118.178.239.30:2181
启动
到bin目录下
先启动zookeeper,加-daemon是后台启动,不加就只是命令界面启动,kafka同理
./zookeeper-server-start.sh -daemon ../config/zookeeper.properties
再启动kafka
./kafka-server-start.sh -daemon ../config/server.properties
整合springboot
- 引入依赖
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>
- 配置yml
spring:
kafka:
#kafka对外暴露地址,集群则ip:port,ip:port
bootstrap-servers: xxx:9091
producer:
#同步失败生产者没有收到ack后的重试次数
retries: 3
#客户端缓冲区大小
buffer-memory: 32MB
#向服务端一次发送的消息量
batch-size: 16KB
#ack
acks: 1
#消息key和消息value的序列化方式
key-serializer: org.apache.kafka.common.serialization.StringSerializer
value-serializer: org.apache.kafka.common.serialization.StringSerializer
consumer:
#消费组
group-id: default-group
#偏移量offset自动提交
enable-auto-commit: true
#当一个消费者启动后默认从哪个位置开始消费
auto-offset-reset: earliest
#一次最多拉取多少条消息
max-poll-records: 500
#反序列化方式
key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
- 生产者代码
@RestController
public class TestController {
@Autowired
KafkaTemplate<String,String> kafkaTemplate;
@PostMapping("/send")
public String send(@RequestBody String message){
kafkaTemplate.send("topic-one",message,message);
return "send success";
}
}
- 消费者代码
@Component
public class TestConsumer {
@KafkaListener(topics = "topic-one")
public void listenGroup(ConsumerRecord<String,String> record){
System.out.println(record.value());
}
}
可视化工具
https://github.com/dushixiang/kafka-map