Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用合流kafka python删除主题_Python_Apache Kafka_Confluent Platform - Fatal编程技术网

如何使用合流kafka python删除主题

如何使用合流kafka python删除主题,python,apache-kafka,confluent-platform,Python,Apache Kafka,Confluent Platform,我正在使用卡夫卡使多个微服务相互通信。服务是用Python编写的,我使用Confluent库来处理Kafka。 在某个时候,我知道有些主题刚刚“结束”,所以我可以自动清理它们 有没有一种方法可以通过Confluent library删除“主题”?我找不到有关此的任何文档 感谢逐字回答您的问题:不,抱歉,您不能使用客户端库删除主题 这可以使用 为了回答您的一些后续问题,我建议删除这些主题是没有意义的。如果您正在运行一个沙箱/原型,那么您可能最终会遇到许多需要从实验中清除的主题。但是,一旦您将这些微

我正在使用卡夫卡使多个微服务相互通信。服务是用Python编写的,我使用Confluent库来处理Kafka。 在某个时候,我知道有些主题刚刚“结束”,所以我可以自动清理它们

有没有一种方法可以通过Confluent library删除“主题”?我找不到有关此的任何文档

感谢逐字回答您的问题:不,抱歉,您不能使用客户端库删除主题

这可以使用

为了回答您的一些后续问题,我建议删除这些主题是没有意义的。如果您正在运行一个沙箱/原型,那么您可能最终会遇到许多需要从实验中清除的主题。但是,一旦您将这些微服务移动到生产环境中,每个主题都将发挥作用,也许它已经完成了对当前数据集的处理,但是下一个呢?除非您正在使用主题命名将其与数据中的某些属性联系起来,否则主题将被重复使用

直截了当地回答您的问题:不,恐怕您不能使用客户端库删除主题

这可以使用


为了回答您的一些后续问题,我建议删除这些主题是没有意义的。如果您正在运行一个沙箱/原型,那么您可能最终会遇到许多需要从实验中清除的主题。但是,一旦您将这些微服务移动到生产环境中,每个主题都将发挥作用,也许它已经完成了对当前数据集的处理,但是下一个呢?除非您正在使用主题命名将其与数据中的某些属性联系起来,否则主题将被重复使用

我使用这个简单的Python函数:

def delete_kafka_topic(topic_name):
    call(["/usr/bin/kafka-topics", "--zookeeper", "zookeeper-1:2181", "--delete", "--topic", topic_name])

我的团队在自动化测试中使用它,在自动化测试中,我们希望能够重新运行测试,验证结果,而不看到以前测试尝试的结果。

我使用这个简单的Python函数:

def delete_kafka_topic(topic_name):
    call(["/usr/bin/kafka-topics", "--zookeeper", "zookeeper-1:2181", "--delete", "--topic", topic_name])
我的团队在自动化测试中使用它,在自动化测试中,我们希望能够重新运行测试、验证结果,并且不会看到以前测试尝试的结果。

您可以使用

示例

获取AdminClient实例和主题列表

def example_delete_topics(a, topics):
    """ delete topics """

    # Call delete_topics to asynchronously delete topics, a future is returned.
    # By default this operation on the broker returns immediately while
    # topics are deleted in the background. But here we give it some time (30s)
    # to propagate in the cluster before returning.
    #
    # Returns a dict of <topic,future>.
    fs = a.delete_topics(topics, operation_timeout=30)

    # Wait for operation to finish.
    for topic, f in fs.items():
        try:
            f.result()  # The result itself is None
            print("Topic {} deleted".format(topic))
        except Exception as e:
            print("Failed to delete topic {}: {}".format(topic, e))
def示例\u删除\u主题(a,主题):
“删除主题”
#调用delete_topics异步删除主题,返回一个future。
#默认情况下,代理上的此操作在
#在后台删除主题。但这里我们给它一些时间(30秒)
#返回前在群集中传播。
#
#返回一个命令。
fs=a.delete_主题(主题,操作超时=30)
#等待操作完成。
对于fs.items()中的主题f:
尝试:
f、 result()#结果本身为无
打印(“主题{}已删除”。格式(主题))
例外情况除外,如e:
打印(“删除主题{}:{}失败”。格式(主题,e))
您可以使用

示例

获取AdminClient实例和主题列表

def example_delete_topics(a, topics):
    """ delete topics """

    # Call delete_topics to asynchronously delete topics, a future is returned.
    # By default this operation on the broker returns immediately while
    # topics are deleted in the background. But here we give it some time (30s)
    # to propagate in the cluster before returning.
    #
    # Returns a dict of <topic,future>.
    fs = a.delete_topics(topics, operation_timeout=30)

    # Wait for operation to finish.
    for topic, f in fs.items():
        try:
            f.result()  # The result itself is None
            print("Topic {} deleted".format(topic))
        except Exception as e:
            print("Failed to delete topic {}: {}".format(topic, e))
def示例\u删除\u主题(a,主题):
“删除主题”
#调用delete_topics异步删除主题,返回一个future。
#默认情况下,代理上的此操作在
#在后台删除主题。但这里我们给它一些时间(30秒)
#返回前在群集中传播。
#
#返回一个命令。
fs=a.delete_主题(主题,操作超时=30)
#等待操作完成。
对于fs.items()中的主题f:
尝试:
f、 result()#结果本身为无
打印(“主题{}已删除”。格式(主题))
例外情况除外,如e:
打印(“删除主题{}:{}失败”。格式(主题,e))

我很好奇,为什么要结束一个话题?除非服务本身被破坏?如果您不能从Python客户端管理主题,那么您应该使用Kafka管理客户端。通常,主题是作为管理/操作功能创建/删除的,而不是作为应用程序和客户端库的一部分。我可能会以错误的方式使用它,所以。。。讨论中的主题是流式主题,包含由不同客户端提供的一系列事件。一旦“故事”结束,内容将被存储在数据库中。那么这个话题就没有真正的兴趣了。它可以被删除。不过,我可以等待卡夫卡垃圾收集来完成这项工作。我还考虑过为这些故事主题使用一个特定的代理,其配置假定主题的生命周期是“短”的。我很好奇,为什么一个主题会结束?除非服务本身被破坏?如果您不能从Python客户端管理主题,那么您应该使用Kafka管理客户端。通常,主题是作为管理/操作功能创建/删除的,而不是作为应用程序和客户端库的一部分。我可能会以错误的方式使用它,所以。。。讨论中的主题是流式主题,包含由不同客户端提供的一系列事件。一旦“故事”结束,内容将被存储在数据库中。那么这个话题就没有真正的兴趣了。它可以被删除。不过,我可以等待卡夫卡垃圾收集来完成这项工作。我还考虑过为这些故事主题使用一个特定的代理,其配置假定主题的生命周期是“短的”。关于您的评论,我确实使用了一个约定,其中主题是故事的“标识符”。我允许我创建客户机(=组),当他们需要时,根据故事的内容创建客户机。它可以很容易地理解故事,而无需过滤掉名为“所有故事”的一般主题中的一些“关键”。你觉得我在处理这件事的方式上有什么地方缺少了限制吗?关于你的评论,我确实使用了一个惯例,比如说,主题是故事的“标识符”。我可以创建客户端(=组),然后