【发布时间】:2020-07-29 09:16:08
【问题描述】:
假设我们有一个 KafkaStreams 应用程序,它从 2 个源主题 customerA.orders 和 customerB.orders 读取数据。每个主题有 3 个分区。
StreamsBuilder builder = new StreamsBuilder();
KStream stream1 = builder.stream("customerA.orders")
KStream stream2 = builder.stream("customerB.orders")
//Business logic which has stateless transformations.
当我运行这个应用程序时,预期会创建 6 个任务(因为每个主题有 3 个分区):当前活动任务:[0_0, 0_1, 1_0, 0_2, 1_1, 1_2]
由于两个主题名称都以“.orders”结尾,我可以使用正则表达式从源主题中读取数据,如下所示
StreamsBuilder builder = new StreamsBuilder();
KStream stream1 = builder.stream(Pattern.compile(".*orders"))
但是当我使用正则表达式运行这个应用程序时,即使我们有 2 个主题,每个主题有 3 个分区,也只创建了 3 个任务而不是 6 个任务:当前活动任务:[0_0, 0_1, 0_2]
streams 应用程序正在从两个主题中获取消息。
当我们对源主题使用正则表达式时,为什么任务数量会减少?
【问题讨论】: