背景:为保证kafka topic 生产和消费的安全,需增加权限认证功能
问题的解决:
step1: kafka server增加权限认证配置: 链接
step2: 代码实例中增加认证参数
1. 生产者
import time
from kafka import KafkaProducer
topic_name = ‘test_group_topic’
producer = KafkaProducer(
sasl_mechanism=”PLAIN”,
security_protocol=’SASL_PLAINTEXT’,
sasl_plain_username=”producer”,
sasl_plain_password=”prod-sec”,
bootstrap_servers=[‘120.78.163.200:9092’]
)
# 生产数据
for i in range(5):
t = time.strftime(‘%Y%m%d%H%M%S’, time.gmtime())
data = t + ‘—%d–test’ % i
print(‘—%d—‘ % i)
producer.send(topic_name, data.encode())
producer.close()
2. 消费者
from kafka import KafkaConsumer
topic_name = ‘test_group_topic’
consumer = KafkaConsumer(topic_name,
# group_id=’test_id’, # 同名组多个消费者消费同一个topic
# enable_auto_commit=True,
# auto_commit_interval_ms=2,
sasl_mechanism=”PLAIN”,
security_protocol=’SASL_PLAINTEXT’,
sasl_plain_username=”consumer”,
sasl_plain_password=”cons-sec”,
bootstrap_servers=[‘120.78.163.200:9092’],
)
for msg in consumer:
print(“%s:%d:%d: key=%s value=%s” % (msg.topic, msg.partition, msg.offset, msg.key, msg.value.decode()))