Linux kafka kraft设置密码以及springboot连接

103 阅读3分钟

原文地址:blog.csdn.net/hesqlplus73…

1. 下载kafka,版本大于2.8.0时,kafka不依赖zookeeper

kafka.apache.org/ 官网下载对应kafka_2.12-3.0.0.tgz

2. 上传到服务器并解压

tar -zxvf kafka_2.12-3.0.0.tgz

image.png

3. 新建config/kafka_server_jaas.conf

cd kafka_2.12-3.0.0/config
vim kafka_server_jaas.conf

image.png 内容如下:末尾的分号不能少

KafkaServer {
    org.apache.kafka.common.security.plain.PlainLoginModule required
    serviceName="kafka"
    username="admin"
    password="admin"
    user_admin="admin";
};

4. 拷贝kraft/server.properties命名为server-sasl.properties

cd kraft
cp server.properties server-sasl.properties

image.png 修改server-sasl.properties内容:(不修改的不显示)

controller.quorum.voters=1@localhost:9093
listeners=SASL_PLAINTEXT://:9092,CONTROLLER://:9093
inter.broker.listener.name=SASL_PLAINTEXT
advertised.listeners=SASL_PLAINTEXT://虚拟机ip:9092
sasl.enabled.mechanisms=PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN

5. 拷贝bin/kafka-server-start.sh命名为kafka-server-start-sasl.sh

cd ../../bin
cp kafka-server-start.sh kafka-server-start-sasl.sh

image.pngKAFKA_HEAP_OPTS后面加入kafka_server_jaas.conf的路径

export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G -Djava.security.auth.login.config=/opt/kafka/kafka_2.12-3.0.0/config/kafka_server_jaas.conf"

image.png

6. 回到安装的根目录下(kafka_2.12-3.0.0)启动

sh ./bin/kafka-server-start-sasl.sh ./config/kraft/server-sasl.properties

7. springboot连接

7.1 添加kafka依赖,注意springboot和kafka之间的版本对应关系

<dependency>
    <groupId>org.springframework.kafka</groupId>
    <artifactId>spring-kafka</artifactId>
</dependency>

7.2 kafka相关配置,如果上面安装kafka时修改了admin的密码这里需要改成对应的密码

spring:
  kafka:
    # 指定kafka 代理地址,多个地址用英文逗号隔开
    bootstrap-servers: 虚拟机ip:9092
    #初始化生产者配置
    producer:
      #消息重发次数,如果配置了事务,则不能为0,改为1
      retries: 0
      # 每次批量发送消息的数量
      batch-size: 16384
      #生产者最大可发送的消息大小,内有多个batch,一旦满了,只有发送到kafka后才能空出位置,否则阻塞接收新消息
      buffer-memory: 33554432
      # 指定消息key和消息体的编解码方式
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
      value-serializer: org.apache.kafka.common.serialization.StringSerializer
      #确认等级ack,kafka生产端最重要的选项,如果配置了事务,那必须是-1或者all
      #acks=0,生产者在成功写入消息之前不会等待任何来自服务器的响应
      #acks=1,只要集群的首领节点收到消息,生产者就会收到一个来自服务器成功响应
      #acks=-1,表示分区leader必须等待消息被成功写入到所有的ISR副本(同步副本)中才认为product请求成功。这种方案提供最高的消息持久性保证,但是理论上吞吐率也是最差的
      acks: all
      #配置事务,名字随便起
      #transaction-id-prefix: hbz-transaction-
      properties:
        sasl.mechanism: PLAIN
        security.protocol: SASL_PLAINTEXT
        sasl.jaas.config: org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin";

    #初始化消费者配置
    consumer:
      # 指定默认消费者group id,消费者监听到的也是这个
      group-id: cssmx
      #消费者在读取一个没有offset的分区或者offset无效时的策略,默认earliest是从头读,latest不是从头读
      auto-offset-reset: latest
      #是否自动提交偏移量offset,默认为true,一般是false,如果为false,则auto-commit-interval属性就会无效
      enable-auto-commit: true
      #自动提交间隔时间,接收到消息后多久会提交offset,前提需要开启自动提交,也就是enable-auto-commit设置为true,默认单位是毫秒(ms),如果写10s,最后加载的显示值为10000ms,需要符合特定时间格式:1000ms,1S,1M,1H,1D(毫秒,秒,分,小时,天)
      auto-commit-interval: 1000
      # 指定消息key和消息体的编解码方式
      key-serializer: org.apache.kafka.common.serialization.StringDeserializer
      value-serializer: org.apache.kafka.common.serialization.StringDeserializer
      #批量消费每次最多消费多少条信息
      max-poll-records: 100
      properties:
        sasl.mechanism: PLAIN
        security.protocol: SASL_PLAINTEXT
        sasl.jaas.config: org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin";

    #监听器设置
    listener:
      #消费端监听的topic不存在时,项目启动会报错(关掉)
      missing-topics-fatal: false
      #设置消费类型 批量消费batch,单条消费single
      type: batch
      #指定容器的线程数,提高并发量,默认为1
      #concurrency: 3
      #手动提交偏移量,当enable-auto-commit为true自动提交时,不需要设置改属性
      #ack-mode: manual