了解 Apache camel 和 Kafka Stream 之间的区别

Understanding the difference between Apache camel and Kafka Stream

对Apache Camel比较熟悉,我是Kafka Streams的小蜜蜂。我正在学习 Kafka 流,但找不到以下查询的任何相关答案,

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

提前致谢。

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

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

您可以查看构建在 Kafka Streams 之上的 KSQL,以了解使用 Kafka Streams 可以构建什么。

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