最近因为公司需要程序在连接kafka的时候需要进行身份认证,在网上翻了一遍之后发现都不能调通,最后测试通过记录一下
1.首先是kafka服务器端配置
kafka服务器端的权限配置也是有多种配置方式,这里配置成功的是这种方式
org.apache.kafka.common.security.plain.PlainLoginModule
其他的身份认证我这边没有做测试,理论上应该差别不大,具体可以自己尝试一下。
上面的认证模式确定之后,就是客户端配置
2.客户端配置账号信息:
server: port: 8080 servlet: context-path: /demo spring: kafka: bootstrap-servers: 192.168.152.69:9092,192.168.152.69:9093,192.168.152.69:9094 producer: retries: 0 batch-size: 16384 buffer-memory: 33554432 key-serializer: org.apache.kafka.common.serialization.StringSerializer value-serializer: org.apache.kafka.common.serialization.StringSerializer consumer: group-id: spring-boot-demo # 手动提交 enable-auto-commit: false auto-offset-reset: latest key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer properties: session.timeout.ms: 60000 listener: log-container-config: false concurrency: 5 # 手动提交 ack-mode: manual_immediate properties: security: protocol: SASL_PLAINTEXT sasl: mechanism: PLAIN jaas: config: 'org.apache.kafka.common.security.plain.PlainLoginModule required username="name" password="password";'
经过测试发布订阅都能正常运行
代码参考地址:https://github.com/xkcoding/spring-boot-demo/tree/master/demo-mq-kafka