我正在使用Kafka Streams Processor API构造一个Kafka Streams应用程序,以从Kafka主题检索消息。我有两个具有相同Kafka Streams配置的消费者应用程序。区别仅在于邮件大小。第一个带有2000个字符(3KB)的消息,而第二个带有34000个字符(60KB)的消息。
现在,在我的第二个消费者应用程序中,我遇到了太多的滞后,并且随着流量的增加而逐渐增加,而我的第一个应用程序能够同时处理消息而没有任何滞后。
我的Stream配置参数如下
application.id=Application1
default.key.serde=org.apache.kafka.common.serialization.Serdes$StringSerde
default.value.serde=org.apache.kafka.common.serialization.Serdes$StringSerde
num.stream.threads=1
commit.interval.ms=10
topology.optimization=all
谢谢
答案 0 :(得分:1)
为了更快地使用消息,您需要增加分区数(如果尚未完成,取决于当前值),然后执行以下两个选项之一:
1)增加应用程序中配置xNWS.UsedRange.Value2 = xNWS.UsedRange.Value2
的值
或
2)使用相同的使用者组(相同的num.stream.threads
)启动多个应用程序。
对我来说,增加application.id
是可取的(直到您达到应用运行的计算机的CPU数量)。尝试逐渐增加此值,例如从6的4增加到8,并监视应用程序的使用者滞后时间。
假设您有足够的分区,则通过增加num.stream.threads
,您的应用将能够并行使用消息。