问题描述
开启公网连接后,如何使用 Python 正常连接到 Kafka 进行生产和消费。
问题分析
在公网环境下,消息队列 Kafka 版要求通过 SSL 证书对消息进行鉴权和加密,保障数据传输过程的安全性,防止数据在网络传输过程中被截取或者窃听,相较于普通公网访问方式具备更高的安全性。目前支持客户端对服务端证书的单向认证, 所以需要下载 SASL_SSL 证书 并指定 SASL_SSL 协议。
解决方案
Python 示例demo如下:
from kafka import KafkaProducer
import ssl
##连接信息
conf = {
'bootstrap_servers': ["kafka-cn*****v.kafka.volces.com:9492","kafka-cn*******.kafka.volces.com:9493","kafka-cn*****.kafka.volces.com:9494"],
'topic_name': 'test',
'sasl_plain_username': 'user',
'sasl_plain_password': 'PASSWORD'
}
print('start producer')
producer = KafkaProducer(bootstrap_servers=conf['bootstrap_servers'],
sasl_mechanism="PLAIN",
ssl_check_hostname=False,
security_protocol='SASL_SSL',
sasl_plain_username=conf['sasl_plain_username'],
sasl_plain_password=conf['sasl_plain_password'])
data = bytes("hello kafka!", encoding="utf-8")
producer.send(conf['topic_name'], data)
producer.close()
print('end producer')
如果您有其他问题,欢迎您联系火山引擎技术支持服务