我们有 Java 代码来管理读取四个分区主题的 Kafka 流消费者的线程池(因此我们有四个消费者线程)。
动态检索分区数的推荐方法是什么,以便线程池 cat 中的初始化代码设置正确的线程数?
能够动态调整以适应越来越多的分区不是必需的。
查看 Java API (v.0.8.1) 我找不到直接的方法。目前我正在浏览 Scala 源代码,我看到了有前途的类(也欢迎 Scala 解决这个问题),但是我也想向社区询问这个问题,以防有人已经找到了一个很好的方法。
谢谢,
我们有 Java 代码来管理读取四个分区主题的 Kafka 流消费者的线程池(因此我们有四个消费者线程)。
动态检索分区数的推荐方法是什么,以便线程池 cat 中的初始化代码设置正确的线程数?
能够动态调整以适应越来越多的分区不是必需的。
查看 Java API (v.0.8.1) 我找不到直接的方法。目前我正在浏览 Scala 源代码,我看到了有前途的类(也欢迎 Scala 解决这个问题),但是我也想向社区询问这个问题,以防有人已经找到了一个很好的方法。
谢谢,
多于分区的线程最终会得到空闲线程,因为每个分区只能被一个消费者线程消费。另一方面,多于线程的分区最终会导致每个线程消耗多个分区,然后影响性能。
因此,为了简单起见,只需使用与分区完全相同数量的线程即可。如果您发现性能成为问题,也许您应该有更多的分区和更多的线程。
您不需要让使用者线程计数与分区计数匹配。只需创建一些消费者线程,以最大限度地提高您的消费能力(例如,如果您正在执行大量 CPU,则大约 2x 核心,如果您正在执行大量 I/O,则更多或更少,取决于其性质)。