簡體   English   中英

如何使用 confluent-kafka-python 確定是否存在 kafka 主題

[英]How to determine if a kafka topic exists using confluent-kafka-python

我正在使用 confluent-kafka-python package 與 Kafka 服務器進行交互。 我可以成功創建主題並將事件推送到它。 但是,我的問題在於當我啟動多個節點(在 Docker 中運行)時,如果第二個實例也嘗試創建主題,我會收到錯誤消息。 在創建新主題之前,我需要先檢查該主題是否已經存在。

from confluent_kafka.admin import AdminClient, NewTopic
kafka_admin = AdminClient({"bootstrap.servers": server})

# First check here if the topic already exists!
if not topic_exists(topic):  # <-- how to accomplish this?
    new_kafka_topic = NewTopic(topic, num_partitions=1, replication_factor=1)
    results = kafka_admin.create_topics([new_kafka_topic])

謝謝你的幫助!

我遇到了同樣的問題,我通過以下方式進行了管理:

client = AdminClient({"bootstrap.servers": BROKER_URL})
topic_metadata = client.list_topics()
if topic_metadata.topics.get(self.topic_name) is None:
  self.create_topic()

AdminClient類的list_topics方法允許傳遞您要檢查的主題名稱,因此您無需閱讀現有主題的完整(可能很大)列表:

list_topics([topic=None][, timeout=-1])

文檔: https://docs.confluent.io/platform/current/clients/confluent-kafka-python/html/index.html#id0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM