【问题标题】:How does Kafka Connect's behavior work?Kafka Connect 的行为如何运作?
【发布时间】:2018-04-24 05:59:53
【问题描述】:

我正在为 Elasticsearch 编写一个 Kafka Sink 连接器。

我在 SinkTask 类中实现了 start、put、flush、close 方法。

但是,我不知道 Kafka Sink Connector 的行为到底是什么。

如果Connect Worker重复执行所有这些任务,通过put()方法从Kafka Broker获取SinkRecord,内部处理,然后将数据发送到Elasticsearch,我想知道offset commit是什么时候在内部操作的,它是与flush() 方法相关联。

另外,我想知道这种重复工作的顺序是否固定。比如,flush或者commit可以在put完成之前完成吗?

我正在开发一个连接,它从远程代理接收数据并将数据放入另一个远程服务器的弹性搜索中。在这种情况下,我们正在测试如果运行连接的服务器的网络暂时断开连接会发生什么。我不明白 Kafka Connect 的工作原理。

如果您知道在这种情况下消息可能会丢失或重复,请寻求解释。

谢谢。

【问题讨论】:

标签: apache-kafka apache-kafka-connect


【解决方案1】:

连接运行时会暂时断开

您的 Connect 工作线程使用的偏移量应该会更新 __consumer_offsets 内部 Kafka 主题。

只要您监控连接器的 /status 端点的非故障状态,并且您可以在您使用的 Kafka 主题的保留期内重新启动它,那么应该几乎不会丢失数据.

此外,正如 cmets kafka-connect-elasticsearch 中指出的那样,您可以检查该代码的提交和刷新语义。如果你分叉,请提交 PR 以帮助社区;)


此外,Logstash 具有 Kafka 输入和 Elasticsearch 输出,因此如果您正在运行 ELK 堆栈,那么这可能是比编写自己的连接器更好的选择

【讨论】:

    猜你喜欢
    • 2020-09-10
    • 2021-06-24
    • 2017-12-15
    • 2017-03-22
    • 2019-11-30
    • 1970-01-01
    • 2018-08-13
    • 2019-10-21
    • 2019-09-04
    相关资源
    最近更新 更多