Kafka Streams:从具有多个分区的主题中读取

时间:2017-10-08 06:32:39

标签: apache-kafka apache-kafka-streams

我有一个包含2个分区的源主题,我开始使用相同的application.id但不同的sink主题的2个kafka stream应用程序。

1)2个应用程序实例是否会从不同的分区接收数据?

2)如果其中一个应用程序被终止,另一个实例会自动从两个实例中消耗吗?

3)我如何证明上述情况?

2 个答案:

答案 0 :(得分:1)

Kafka Streams正在使用相同的使用者库,因此行为应该与您描述的相匹配 - 如果您有2个应用程序,那么每个应用程序将从分配给它的分区中消耗,如果有一个被杀死,那么alive将处理来自所有分区......

通过运行应用程序可以证明 - 例如 - 在最简单的情况下,只需为消耗的数据打印不同的前缀,并提交键控值,这样您就可以区分一条消息何时从一个分区发送到另一个分区...

答案 1 :(得分:0)

  

1)2个应用程序实例是否会从不同的分区接收数据?

  

2)如果其中一个应用程序被终止,另一个实例会自动从两个实例中消耗吗?

是。 (但请记住,另一个实例现在可以将输出数据发送给它自己的,而不是原始实例的输出主题。)

  

3)我如何证明上述情况?

您可以检查应用程序的日志(Kafka Streams将记录有关每个实例的主题/分区/流任务的信息),您可以运行集成测试等。