kafka

kafka 生成者和消费者

topic_name 主题名需要一致。



from confluent_kafka import Producer, KafkaException  # 导入 Kafka 的生产者和异常类

class KafkaOperator():
    def __init__(self, topic_name):
        """
        KafkaOperator 构造函数
        :param topic_name: 要发送消息的 Kafka 主题名
        """
        self.topic_name = topic_name  # 保存 Kafka 主题名

        # Kafka 配置参数,包括多个服务器地址和客户端 ID
        self.kafka_params = {
           'bootstrap.servers': 'xxx,'
                                 'xxx,'
                                 'xxx',
           'client.id': 'video_keywords'  
        }

        # 创建 Kafka 生产者实例
        self.kafka_producer = Producer(self.kafka_params)

    def produce(self, message):
        """
        向 Kafka 主题发送一条消息
        :param message: 字符串格式的消息
        """
        self.kafka_producer.produce(self.topic_name, message)  # 发送消息
        self.kafka_producer.flush()  # 强制将缓存中的消息立即推送出去,确保消息发送完成

if __name__ == "__main__":
    # 当此脚本作为主程序运行时,执行以下代码

    # 实例化 KafkaOperator,指定 Kafka 的 topic
    k_operator = KafkaOperator(topic_name="xxx")

    # 构造要发送的消息,包含关键词和图像质量
    k_msg = {
      "keywords": "tv/movies-test,tv/movies-here",  # 视频关键词
      "image_quality": "high",                      # 图像质量设置为高
    }

    import json  # 引入 json 模块以将 Python 字典转换为字符串

    # 将消息字典转换为 JSON 字符串并发送到 Kafka
    k_operator.produce(json.dumps(k_msg))

    print("done")  # 打印完成信息

06-07
### Kafka 使用教程和核心技术详解 Kafka 是一个分布式流处理平台,最初由 LinkedIn 开发,并于 2011 年开源。它被设计为高吞吐量、低延迟的消息系统,广泛用于日志收集、监控数据聚合、流式数据处理等领域[^1]。 #### Kafka 的核心概念 Kafka 的架构围绕几个关键概念展开: - **主题(Topic)**:Kafka 中消息的类别或提要名称。生产者将消息发布到特定主题,消费者从主题中订阅消息。 - **分区(Partition)**:每个主题可以划分为多个分区,分区是 Kafka 中并行处理的基础单位。 - **副本(Replica)**:为了提高可靠性,Kafka 会为每个分区创建多个副本,分布在不同的 Broker 上。 - **消费者组(Consumer Group)**:消费者可以组成一个组来共同消费一个主题的消息,组内的每个消费者负责处理一部分分区的消息[^2]。 #### Kafka 的使用方法 Kafka 提供了多种客户端库以支持不同编程语言的开发。以下是一个简单的 Python 示例,展示如何使用 Kafka 生产者和消费者: ```python from kafka import KafkaProducer, KafkaConsumer # 创建 Kafka 生产者 producer = KafkaProducer(bootstrap_servers='localhost:9092') # 发送消息到指定主题 producer.send('my-topic', b'Hello, Kafka!') producer.flush() producer.close() # 创建 Kafka 消费者 consumer = KafkaConsumer( 'my-topic', bootstrap_servers='localhost:9092', auto_offset_reset='earliest', enable_auto_commit=True, group_id='my-group' ) # 消费消息 for message in consumer: print(f"Received message: {message.value.decode('utf-8')}") ``` #### Kafka 的核心技术详解 Kafka 的核心技术主要包括以下几个方面: - **持久化日志**:Kafka 将消息存储在磁盘上,并通过顺序写入操作优化性能。这种设计使得 Kafka 能够提供高吞吐量和持久性保证。 - **分区与并行性**:通过将主题划分为多个分区,Kafka 实现了水平扩展的能力。每个分区可以独立地被多个消费者消费。 - **复制机制**:Kafka 的复制机制确保了即使某些 Broker 出现故障,数据仍然可用。领导者分区负责读写操作,而跟随者分区则同步数据[^3]。 - **消费者偏移量管理**:Kafka 允许消费者自行管理偏移量,这为灵活的消费模式提供了支持,例如重新消费旧消息或跳过某些消息。 #### Kafka 的学习资料 对于初学者,可以从官方文档入手,了解 Kafka 的基本概念和配置选项。此外,还有许多在线课程和书籍可以帮助深入理解 Kafka 的原理和实践[^4]。 ```markdown - 官方文档: https://kafka.apache.org/documentation/ - 在线课程: Coursera、Udemy 等平台提供的 Kafka 课程 - 推荐书籍: "Kafka: The Definitive Guide" by Neha Narkhede, Gwen Shapira, and Todd Palino ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI算法网奇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值