我尝试使用Kafka Streams应用程序(在处理期间没有向Kafka添加数据)处理已放置在Kafka集群中的数据,两者都具有版本0.10.2.1。应用程序使用writeAsText
函数输出数据。
当应用程序在集群中运行时(通过在指定不同客户端ID的不同机器上运行jar),一切顺利,直到处理的第300秒 - 此时它停止 - 不输出更多数据并且不会抛出异常。我尝试了很多次,结果总是一样的。我确信群集中仍有剩余数据需要处理。如果只运行一个应用程序实例,则会正确处理数据。
经过一些分析后,我发现了不同的设置可能有所帮助。在我设置的应用程序中:
properties.put(ConsumerConfig.SESSION_TIMEOUT_MS_CONFIG, 1800000);
properties.put(ConsumerConfig.REQUEST_TIMEOUT_MS_CONFIG, 1800001);
properties.put(ConsumerConfig.MAX_POLL_INTERVAL_MS_CONFIG, 1800000);
另外,Kafka服务器的每个实例在配置中都有以下行:
group.max.session.timeout.ms=1800001
不幸的是,这些没有帮助。