我想就以下问题征求一些意见-我正在使用 Consumer.committableSource
在我的申请表里。在测试期间,我发现应用程序不会在kafka主题的分区之间进行循环,而是会在切换到下一个分区之前耗尽给定的分区,直到消耗了最新的条目。这对于我的应用程序来说并不理想,因为它关心事件在kafka上的时间顺序。这种详尽的读取分区的方法就像在时间上来回移动一样。
关于如何调整消费者以支持分区消费循环,有什么想法吗?谢谢您!
我想就以下问题征求一些意见-我正在使用 Consumer.committableSource
在我的申请表里。在测试期间,我发现应用程序不会在kafka主题的分区之间进行循环,而是会在切换到下一个分区之前耗尽给定的分区,直到消耗了最新的条目。这对于我的应用程序来说并不理想,因为它关心事件在kafka上的时间顺序。这种详尽的读取分区的方法就像在时间上来回移动一样。
关于如何调整消费者以支持分区消费循环,有什么想法吗?谢谢您!
1条答案
按热度按时间kzipqqlq1#
您可以以两种方式使用此场景第一种更可取,因为它以最小的延迟实现并行化和高吞吐量。
为同一使用者创建多个示例。它将作为使用者组工作,所有示例将并行地共享分区加载。e、 g.如果您有4个分区,并且使用2个示例,这意味着理想情况1示例将使用2个分区。现在如果您将示例增加到4,那么在这种情况下,理想情况下的每个示例将使用1个分区。在这种情况下,分区重新平衡将由使用者的组管理层管理。
您还可以使用下面的api将分区列表分配给使用者
public void assign(java.util.collection分区)
这将被手动分配给使用者的分区列表,因此使用者将只使用分配的分区。这不会使用消费者再平衡。