Kafka3.0.0安装使用教程

去kafka官网下载3.0.0版本
https://kafka.apache.org/downloads
Kafka3.0.0安装使用教程_第1张图片
将压缩包上传到服务器
tar -zxvf kafka_2.12-3.0.0.tgz解压

目录结构如下
Kafka3.0.0安装使用教程_第2张图片
cd config
ll
Kafka3.0.0安装使用教程_第3张图片
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目录下
Kafka3.0.0安装使用教程_第4张图片
先启动zookeeper,加-daemon是后台启动,不加就只是命令界面启动,kafka同理

./zookeeper-server-start.sh -daemon ../config/zookeeper.properties

再启动kafka

./kafka-server-start.sh -daemon ../config/server.properties

整合springboot

  1. 引入依赖
<dependency>
   <groupId>org.springframework.kafka</groupId>
   <artifactId>spring-kafka</artifactId>
</dependency>
  1. 配置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
  1. 生产者代码
@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";
    }
}
  1. 消费者代码
@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

你可能感兴趣的:(kafka,java,分布式)