当邮件大小很大时,Kafka主题延迟会逐渐增加

时间:2019-03-22 14:04:22

标签: apache-kafka kafka-consumer-api apache-kafka-streams

我正在使用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

谢谢

1 个答案:

答案 0 :(得分:1)

为了更快地使用消息,您需要增加分区数(如果尚未完成,取决于当前值),然后执行以下两个选项之一:

1)增加应用程序中配置xNWS.UsedRange.Value2 = xNWS.UsedRange.Value2 的值

2)使用相同的使用者组(相同的num.stream.threads)启动多个应用程序。

对我来说,增加application.id是可取的(直到您达到应用运行的计算机的CPU数量)。尝试逐渐增加此值,例如从6的4增加到8,并监视应用程序的使用者滞后时间。

假设您有足够的分区,则通过增加num.stream.threads,您的应用将能够并行使用消息。