我有一个包含2个分区的源主题,我开始使用相同的application.id但不同的sink主题的2个kafka stream应用程序。
1)2个应用程序实例是否会从不同的分区接收数据?
2)如果其中一个应用程序被终止,另一个实例会自动从两个实例中消耗吗?
3)我如何证明上述情况?
答案 0 :(得分:1)
Kafka Streams正在使用相同的使用者库,因此行为应该与您描述的相匹配 - 如果您有2个应用程序,那么每个应用程序将从分配给它的分区中消耗,如果有一个被杀死,那么alive将处理来自所有分区......
通过运行应用程序可以证明 - 例如 - 在最简单的情况下,只需为消耗的数据打印不同的前缀,并提交键控值,这样您就可以区分一条消息何时从一个分区发送到另一个分区...
答案 1 :(得分:0)
1)2个应用程序实例是否会从不同的分区接收数据?
是
2)如果其中一个应用程序被终止,另一个实例会自动从两个实例中消耗吗?
是。 (但请记住,另一个实例现在可以将输出数据发送给它自己的,而不是原始实例的输出主题。)
3)我如何证明上述情况?
您可以检查应用程序的日志(Kafka Streams将记录有关每个实例的主题/分区/流任务的信息),您可以运行集成测试等。