【问题标题】:Understanding the difference between Apache camel and Kafka Stream了解 Apache camel 和 Kafka Stream 之间的区别
【发布时间】:2021-12-15 09:14:29
【问题描述】:

对 Apache Camel 非常熟悉,我是 Kafka Streams 的新手。我正在学习 Kafka 流,但找不到以下查询的任何相关答案,

作为一个库,Camel 和 Kafka Streams 都可以创建管道来提取数据、抛光/转换并使用处理器加载到某个接收器中。 Camel 还支持流处理。我想了解

  • 这两者之间的区别,因为我觉得 Camel 库比 Kafka Stream 更通用,这与没有 Kafka 代理的系统无关(不确定这是否错误)
  • 推荐哪种库用于哪种类型的用例

提前致谢。

【问题讨论】:

    标签: apache-camel apache-kafka-streams


    【解决方案1】:

    Kafka Streams 是一个流处理框架,它使用来自 Kafka 主题的消息并将它们写回其他 Kafka 主题。它支持有状态的转换,例如聚合到表和类似的,在必要时利用 RocksDB。您可以为此类表/存储提供 Rest 端点,但这已经扩展了 Kafka Streams 功能。

    另一个可能的扩展是,将消息发送到 Kafka 以外的其他地方。您必须让客户自己这样做。在这方面,Kafka Streams 的范围远不如 Apache Camel 通用。由于这种专业化,它支持各种 Kafka 特定功能,例如基于 Kafka 消费者组的并行处理、预定义的消息信封和恰好一次语义。最重要的功能之一是支持 Kafka 流中的“流时间”,这允许通过其 Kafka 时间戳重新处理消息,而不管挂钟时间如何。

    您可以查看基于 Kafka Streams 构建的 KSQL,以了解可以使用 Kafka Streams 构建什么。

    简而言之,如果您在 Kafka 中有数据,并且您想要处理并写回 Kafka 以供其他程序使用,那么 Kafka Streams 是一个非常有用的框架。它甚至具有与 Apache Camel 类似的部署模型。但是,如果您需要将不同的技术与 Kafka 集成,则需要继续使用 Apache Camel。请注意,Apache Kafka 家族中有 Kafka Connect,它旨在将来自其他系统的数据与 Apache Kafka 集成。

    【讨论】:

      猜你喜欢
      • 2018-06-24
      • 1970-01-01
      • 2021-09-03
      • 1970-01-01
      • 1970-01-01
      • 2019-10-30
      • 2011-10-26
      • 2011-05-16
      • 1970-01-01
      相关资源
      最近更新 更多