Kafka-connect快速添加更多主题

时间:2019-03-22 15:05:39

标签: apache-kafka kafka-consumer-api apache-kafka-connect

我有一个elasticsearch kafka-connect connector,涉及一些主题。
使用以下配置:

{
    connection.url": "https://my-es-cluster:443",
    "connector.class": "io.confluent.connect.elasticsearch.ElasticsearchSinkConnector",
    "key.converter": "org.apache.kafka.connect.storage.StringConverter",
    "key.ignore": "true",
    "topics": "topic1,topic2",
    ...
}

我可以在它运行时为其添加更多主题吗?
会发生什么?
如果我从列表中删除了一些主题并以后又再次添加了,该怎么办。

我想在这里添加新的topic3

{
    ...
    "topics": "topic1,topic2,topic3",
    ...
}

我要删除topic2是什么?其他主题会重新消耗吗?:

{
    ...
    "topics": "topic1,topic3",
    ...
}

1 个答案:

答案 0 :(得分:1)

由于您已经在运行fkafka,因此可以使用kafka-connect的REST API并检查自己:https://docs.confluent.io/current/connect/references/restapi.html

如果您添加一个新主题(kafka-connect),则该主题中当前所有的消息(根据保留策略)将被使用。

topic3

检查此连接器的状态和配置:

PUT http://kafka-connect:8083/connectors/my-test-connector/config
{
   ...
   "topics": "topic1,topic2,topic3",
   ...
}

如果要禁用某些主题,只需使用GET http://kafka-connect:8083/connectors/my-test-connector 来更新该连接器的配置。

PUT

PUT http://kafka-connect:8083/connectors/my-test-connector/config { ... "topics": "topic1,topic3", ... } topic1的任何事情都不会改变。只是topic3将不再被使用。
但是,如果您想将其返回,则来自topic2的消息将从上次提交的偏移量开始消耗,而不是从开头开始。

对于每个存储的topic2上次提交的consumer group,暂时不要从配置中删除主题就可以了。 在这种情况下,消费者组将为offset

即使您删除连接器(connect-my-test-connector),然后再次使用相同的名称创建它,也将保存偏移量,并且从删除点开始继续消耗它们。 (请注意保留政策,通常是7天)。