python 实例权限认证连接 Kafka

为了确保Kafka主题生产和消费的安全,本文介绍了如何通过Python进行权限认证设置。首先,需要在Kafka server上配置权限认证,然后在生产者和消费者的代码实例中添加相应的认证参数,如SASL_PLAINTEXT安全协议和用户名密码。生产者代码演示了如何发送消息,而消费者代码展示了如何接收和打印消息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景:为保证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",

在使用 Python 处理 Kafka 日志时,通常会结合 `kafka-python` 库与 Python 的 `logging` 模块来实现日志的消费、处理和记录。以下是一个完整的示例代码,展示了如何从 Kafka 主题中拉取消息,并将这些消息记录到日志文件中。 ### 示例:PythonKafka 消费消息并记录日志 ```python from kafka import KafkaConsumer import logging # 配置日志记录 logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s', filename='kafka_messages.log', # 将日志写入文件 filemode='a' # 追加模式 ) # 创建 Kafka 消费者 consumer = KafkaConsumer( 'stock', # Kafka 主题名称 bootstrap_servers=['10.0.0.201:9092', '10.0.0.202:9092', '10.0.0.203:9092'], auto_offset_reset='earliest', # 从最早的偏移量开始读取 enable_auto_commit=False, # 禁用自动提交 group_id='my-group' # 消费者组 ID ) try: for message in consumer: msg_value = message.value.decode('utf-8') # 解码消息内容 logging.info(f"Received message: {msg_value}") # 记录日志 except Exception as e: logging.error(f"Error occurred: {e}") finally: consumer.close() ``` ### 关键点说明: - **KafkaConsumer 初始化**: - `bootstrap_servers` 指定了 Kafka 集群的地址。 - `auto_offset_reset='earliest'` 表示如果消费者组没有初始偏移量,则从最早的消息开始消费。 - `enable_auto_commit=False` 表示禁用自动提交偏移量,适用于需要手动控制偏移量的场景。 - `group_id` 是消费者组的唯一标识符,确保多个消费者实例之间协调工作。 - **日志配置**: - 使用 `logging.basicConfig()` 设置日志级别为 `INFO`,并将日志输出到名为 `kafka_messages.log` 的文件中。 - `filemode='a'` 表示以追加方式写入日志文件,避免每次运行程序时覆盖旧的日志。 - **消息处理**: - 每条从 Kafka 拉取的消息都会被解码为 UTF-8 字符串,并通过 `logging.info()` 写入日志文件。 - 异常处理部分捕获可能发生的错误,并将其记录为 `ERROR` 级别日志。 - **资源释放**: - 在 `finally` 块中调用 `consumer.close()` 来确保即使发生异常,Kafka 消费者也能正确关闭。 ### 常见问题排查: - 如果遇到反序列化失败的问题(如引用[2]所述),请检查生产端发送的消息格式是否与消费端期望的格式一致。例如,如果生产端发送的是 JSON 格式的数据,消费端应使用相应的解析方法(如 `json.loads()`)来处理消息内容。 - 确保 Kafka 集群的网络可达性,特别是当 Kafka Broker 地址配置为内网 IP 时,外部客户端可能无法直接访问。 - 如果日志文件未生成或内容为空,请检查程序是否有写入权限,并确认日志路径是否正确。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值