问题描述
客户在前端创建Scram类型密码,代码中无法连接到Kafka
问题分析
客户代码中协议及认证机制部分配置如下:
因为SASL_SSL协议并不支持SCRAM,需要更改为SASL_PLAINTEXT协议
解决方案
调整协议修改代码如下:
"sasl.mechanism": "SCRAM-SHA-512"
"security.protocol": "SASL_PLAINTEXT"
Python 示例demo如下:
import datetime
import json
import time
import uuid
from kafka import KafkaProducer
from kafka.errors import KafkaError
producer = KafkaProducer(bootstrap_servers=['kafka-6a1*****.kafka.ivolces.com:9093'],
sasl_mechanism="SCRAM-SHA-256",
security_protocol='SASL_PLAINTEXT',
api_version = (0,10),
retries=5,
sasl_plain_username='demo',
sasl_plain_password='A*******20')
topic = 'rudonx-demo'
def test():
print('begin')
try:
n = 0
while True:
dic = {}
dic['id'] = n
n = n + 1
dic['myuuid'] = str(uuid.uuid4().hex)
dic['time'] = datetime.datetime.now().strftime("%Y%m%d %H:%M:%S")
producer.send(topic, json.dumps(dic).encode())
print("send:" + json.dumps(dic))
time.sleep(0.5)
except KafkaError as e:
print(e)
finally:
producer.close()
print('done')
if __name__ == '__main__':
test()
如果您有其他问题,欢迎您联系火山引擎技术支持服务