我对Apache Camel 非常熟悉,我是Kafka溪流的一只新蜜蜂。我正在学习Kafka溪流,但是对于下面的查询找不到任何相关的答案,
作为一个库,Camel和Kafka Streams都可以创建管道来提取数据,使用处理器进行抛光/转换并加载到某个接收器中。Camel还支持流处理。我想了解
- 这两者之间的区别,因为我觉得 Camel 库比Kafka流更通用,Kafka流与没有Kafka代理的系统无关(不确定这是否错误)
- 针对哪种类型的用例推荐哪种库
先谢谢你。
我对Apache Camel 非常熟悉,我是Kafka溪流的一只新蜜蜂。我正在学习Kafka溪流,但是对于下面的查询找不到任何相关的答案,
作为一个库,Camel和Kafka Streams都可以创建管道来提取数据,使用处理器进行抛光/转换并加载到某个接收器中。Camel还支持流处理。我想了解
先谢谢你。
1条答案
按热度按时间rkue9o1l1#
Kafka Streams是一个流处理框架,它使用来自Kafka主题的消息,并将它们写回其他Kafka主题。它提供了对有状态转换的支持,如对表的聚合等,在必要时利用RocksDB。您可以为此类表/存储提供Rest终结点,但这已经是对Kafka Streams功能的扩展。
另一个可能的扩展是,将消息发送到Kafka之外的其他地方。您必须自己提供客户端来完成此操作。在这方面,Kafka Streams的作用域远不如Apache Camel通用。由于这种专业化,它支持各种Kafka特定的特性,例如基于Kafka消费者组的并行处理。其中一个最重要的特性是支持Kafka流中的“流时间”,它允许根据消息的Kafka时间戳重新处理消息,而不考虑挂钟时间。
你可以看看KSQL,它是建立在Kafka流的基础上,以获得一个想法,什么是可以建立Kafka流。
简而言之,如果你在Kafka中有数据,你想处理并写回Kafka供其他程序使用,Kafka Streams是一个非常有用的框架。它甚至有一个与Apache Camel相似的部署模型。但是,如果你需要将不同的技术与Kafka集成,你需要继续使用Apache Camel。注意,在Apache Kafka家族中有Kafka Connect,它是为了将来自其他系统的数据与ApacheKafka集成。