当前位置: 首页 > 知识库问答 >
问题:

Kafka connect 或 Kafka Client

黄弘盛
2023-03-14

我需要从Kafka主题获取消息并通过基于HTTP的API通知其他系统。也就是说,从主题获取消息,映射到第三方API并调用它们。我打算为此编写一个Kafka Sink连接器。

对于这个用例,Kafka Connect是正确的选择还是我应该使用Kafka客户端。

共有3个答案

巫马淳
2023-03-14

当使用kafka connect源生成特定主题的消息时,应该使用kafkaconnect接收器。

例如,当你使用file-source时,你应该使用file-sink来使用已经生成的源文件。或者,当您使用jdbc-source时,您应该使用jdbc-sink来消费您生成的内容。

由于生产者和接收器使用者的架构应该是兼容的,因此应在两端使用兼容的源和接收器。

如果在某些情况下架构不兼容,您可以使用自kafka 10.2版起添加的SMT(简单消息转换)功能,您将能够编写消息转换器来在不兼容的生产者和消费者之间传输消息。

注意:如果您想更快地传输消息,我建议您使用 avro 和架构注册表来更有效地传输消息。

如果你可以用java编码,你可以使用java kafka stream,Spring-Kafka项目或流处理来实现你想要的。

云浩然
2023-03-14

Kafka Connect 可以很好地用于此目的,但这也是一个非常简单的消费者应用程序,因为消费者还具有容错/可伸缩性的好处,在这种情况下,您可能只是在每个消费者实例中一次执行简单的消息处理。您还可以轻松地将enable.auto.commit 用于此应用程序,因此您不会遇到直接使用使用者的棘手部分。在这种情况下,与使用消费者相比,使用 Kafka Connect 会给您带来的主要好处是,连接器可以针对不同的输入格式通用,但对于自定义连接器来说,这可能并不重要。

仉姚石
2023-03-14

Kafka 客户端 当您完全控制代码并且您是专家开发人员时,您希望将应用程序连接到 Kafka 并可以修改应用程序的代码。

push data into Kafka

pull data from Kafka.

https://cwiki.apache.org/confluence/display/KAFKA/Clients

Kafka Connect当您无法控制Kafka中的第三方代码时,您必须将Kafka连接到您无法修改代码的数据存储。

Kafka Connect的范围很窄:它只专注于向Kafka复制流媒体数据,不处理其他任务。

http://docs.confluent.io/2.0.0/connect/

我从其他博客中添加了几行来解释差异

想要采用Kafka的公司会编写一系列代码来发布数据流。我们从经验中学到的是,正确地做这件事比看起来更复杂。特别是,每个连接器都必须解决一组问题:

• 架构管理:数据管道在可用位置携带架构信息的能力。如果没有此功能,您最终将不得不在下游重新创建它。此外,如果同一数据有多个使用者,则每个使用者都必须重新创建它。我们将在以后的博客文章中介绍数据管道架构管理的各种细微差别。

•容错:运行进程的多个实例,并对故障具有弹性

•并行性:横向扩展以处理大规模数据集

• 延迟:实时摄取、传输和处理数据,从而摆脱每天一次的数据转储。

交付语义:当机器出现故障或流程崩溃时,提供强有力的保证

•操作和监控:以一致的方式监控每个数据集成过程的运行状况和进度

这些问题本身就很难解决,在每个连接器中单独解决是不可行的。相反,您需要一个单一的基础架构平台连接器,它可以以一致的方式解决这些问题。

直到最近,采用Kafka进行数据集成还需要大量的开发人员专业知识;开发Kafka连接器需要在客户端API上构建。

https://www.confluent.io/blog/announcing-kafka-connect-building-large-scale-low-latency-data-pipelines/

 类似资料:
  • 我参考了以下链接来了解Kafka的HDFS连接https://docs.confluent.io/2.0.0/Connect/connect-hdfs/docs/index.html 我能够通过配置单元集成将数据从Kafka导出到HDFS。 现在我正尝试在Java程序的帮助下将avro记录写入Kafka 当我把Avro记录写到Kafka主题时,我在Connect中出现以下错误

  • 在标准/自定义kafkaconnect接收器中,我们如何指定它应该只使用来自kafka主题的read_comitted消息。我可以在这里看到配置,但看不到任何选项(除非这是默认行为)。谢了。https://docs . confluent . io/current/installation/configuration/connect/sink-connect-configs . html

  • 问题内容: 定义简单单击JButton的行为时,哪种方法正确?而且,有什么区别? 要么 问题答案: 是Swing中的低级事件侦听器(顺便说一下,也是AWT)。 是更高级别的,应该使用。 比起更好的选择,应该使用(实际上是)。 使用允许在多个小部件(例如,…)之间共享它;您不仅可以共享按下按钮/菜单时触发的代码,还可以共享状态,尤其是可以共享操作(及其关联的小部件)是否处于启用状态。

  • 连接的多个输入有一个为Yes则输出Yes。 用法 Your browser does not support the video tag. 案例:小闹钟 功能:逢15就猫叫 工作原理 当输入为“yes”时,“或”节点为“yes”。 例如:一种报警装置,当被暴露在光强下(光强大于30),或者被移动(陀螺仪被震动)时报警。 请注意上面的程序等于: 提示 事实上,你不需要经常使用“或”节点,因为“或”逻

  • 下面是代码的味道:https://scastie.scala-lang.org/bQMGrAKgRoOFaK1lwCy04g 我有两个JSON APIendpoint。首先是项目。cgi以以下格式返回项目对象列表 表示项目没有借款人。 其次,用户。cgi,返回查询参数id指定的用户 API可能不好,但我必须处理它。现在在Scala中,我想使用这个漂亮的数据模型 我还有以下用于执行HTTP请求的方法

  • AspectJ意味着它的另一个AOP实现不是基于spring的,如果我们想使用它,那么除了spring之外,我们还需要包括一些第三方JAR。 Spring AOP注释意味着Spring使用AspectJ注释来提供AOP特性。 这些假设公平吗?

  • 问题内容: 我目前正在使用“设置”结构使用Redis。 我想知道是否有可能自动清理空的“ set”吗? 否则找到一个cron /进程来定期清理空的“ set” 更新: 更笼统的问题是,“(nil)”和“(空列表或集合)”之间存在差异(内存使用情况) 例: 要么 问题答案: 这已经是自动的。如果集合为空,则将其从名称空间中删除。 您不必执行任何特定操作即可从此行为中受益。 要回答第二个问题,(nil

  • 问题内容: 我有这个表达: 这些元素的(,,)有优先权? 您能用方括号显示操作顺序吗? 问题答案: 首先,然后,然后。 您的表情将被评估为。 https://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html